Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

1.5. Կցում ենք դասեր՝ տվյալների բազայի և շաբլոնների հետ աշխատանքի համար

10/05/2025, by Ivan

Մենք ստեղծել ենք մեր ֆրեյմվորկի կառուցվածքը, այժմ ժամանակն է մտածել տվյալների՝ նորությունների, ապրանքների պահպանման մասին։ Տվյալների բազայի հետ աշխատող օբյեկտը պետք է կարողանա՝

  • Կառավարել միացումը տվյալների բազայի հետ
  • Տրամադրել փոքր աբստրակցիա՝ բազայից
  • Քեշավորել հարցումները
  • Պարզեցնել բազայի հետ ընդհանուր գործողությունները

Դրա համար մենք ստեղծում ենք օբյեկտ Registry/objects/db.class.php:

Այս դասը կպարունակի բոլոր անհրաժեշտ մեթոդները՝ տվյալների բազայի հետ աշխատելու համար՝ միացում, հարցումներ, ավելացում, թարմացում, ջնջում, քեշավորում։

Մենք նաև ստեղծում ենք template.class.php դասը՝ Registry/objects պանակում՝ աշխատելու համար շաբլոնների հետ։ Այն տրամադրում է մեթոդներ՝

  • Շաբլոնների միացում և բովանդակության տեղադրում
  • Տոկենների փոխարինում՝ տվյալներով
  • SQL քեշից և տվյալների քեշից փոխարինում

Երրորդ դասը, որը պետք է ավելացնենք՝ page.class.php է՝ պահելու էջի վիճակը, բովանդակությունը, թեգերը, վերնագիրը և այլն։

Բոլոր դասերն ինտեգրվում են ֆրեյմվորկի registry.class.php-ի միջոցով՝ օգտագործելով storeObject() և getObject() մեթոդները։

Մենք ստեղծեցինք նաև MySQL աղյուսակ՝ users անունով, որում կան դաշտեր՝ id, name, email։

Գլխավոր էջի շաբլոնը՝ Views/Templates/main.tpl.php ֆայլում, պարունակում է տեգեր և տոքեններ՝ օգտագործելու համար էջում՝

<ul>
<!-- START members -->
<li>{name} {email}</li>
<!-- END members -->
</ul>

index.php ֆայլում մենք՝

  1. Սկսում ենք session-ը
  2. Նշում ենք APP_PATH և FW հաստատունները
  3. Լցնում ենք օբյեկտները՝ db, template
  4. Կապվում ենք տվյալների բազայի հետ
  5. Նախապատրաստում ենք շաբլոնը՝ main.tpl.php
  6. Կատարում ենք հարցում՝ SELECT * FROM users
  7. Ավելացնում ենք տվյալները members թեգում
  8. Սահմանում ենք էջի վերնագիրը
  9. Պարունակում ենք բովանդակությունը և ցուցադրում ենք էջը

Արդյունքում ստանում ենք ցուցակ՝ օգտատերերի անուններով և էլ․հասցեներով։

Նշված են նաև ուղղումներ, որոնք կատարվել են սխալներից հետո՝ դասերի անունների վերանվանում, կանչի ուղիների ուղղում, սխալ անունով փոփոխականների շտկում։

Այս փուլով մենք ավարտեցինք տվյալների բազայի և շաբլոնների հետ աշխատող դասերի պատրաստումը և ինտեգրումը՝ մեր ֆրեյմվորկի հետ։

Այժմ, երբ մենք ունենք տվյալների բազայի և շաբլոնների կառավարման դասերը, պետք է դրանք միացնենք մեր ֆրեյմվորկին։

Սրա համար մենք ստեղծում ենք storeCoreObjects() մեթոդը Registry/registry.class.php ֆայլում՝ որտեղ միացնում ենք մեր հիմնական օբյեկտները՝ db և template:

public function storeCoreObjects()
{
  $this->storeObject('db', 'db');
  $this->storeObject('template', 'template');
}

Այս մեթոդը կկոչվի index.php ֆայլից։ Այնուհետև մենք ստեղծում ենք users աղյուսակը՝ օրինակային տվյալներով՝ 3 դաշտով՝ id, name, email։

Ստեղծում ենք գլխավոր էջի շաբլոնը՝ Views/Templates/main.tpl.php ֆայլում՝ հետևյալ բովանդակությամբ․

<html>
<head>
  <title> Powered by PCA Framework</title>
</head>
<body>
  <h1>Our Members</h1>
  <p>Below is a list of our members:</p>
  <ul>
    <!-- START members -->
    <li>{name} {email}</li>
    <!-- END members -->
  </ul>
</body>
</html>

Այժմ index.php ֆայլում, մենք ներմուծում ենք տվյալները և դրանք ավելացնում էջի մեջ՝ որպես թեգ։ Արդյունքում կստանանք ճիշտ ցուցադրված ցանկ՝ օգտատերերով։

Եթե սխալներ հայտնվեն՝ անհրաժեշտ է ստուգել դասերի անունները, ֆայլերի ուղիները և օգտագործվող մեթոդները։

Տրամադրվում են նաև փաթչեր՝ ուղղելու database դասի անունը db-ի, կարգավորելու շաբլոնի վերնագրի արտածումը, և ավելացնելու անհրաժեշտ controller ֆայլեր։

Այս փուլով մենք հասանք նրան, որ ունենք մոդուլներ՝ տվյալների բազայի և շաբլոնների կառավարման համար, որոնք օգտագործվում են index.php-ում՝ էջի դինամիկ բովանդակություն ցուցադրելու համար։

Եթե ամեն ինչ անցավ հաջողությամբ և բազայում կան օգտատերեր, ապա դուք պետք է տեսնեք մոտավորապես հետևյալ արդյունքը․

Our users

Եթե ինչ–որ բան չաշխատեց կամ առաջացան սխալներ, հնարավոր է՝ ես նախորդ հոդվածներում դեռ չշտկած լինեմ կոդը։ Կարող եք դիտել աշխատանքային օրինակը GitHub-ում։

Ահա այն սխալները, որոնք առաջացան հոդվածը գրելու ընթացքում։

Փոխում ենք տվյալների բազայի կառավարման դասի անունը՝ Registry/objects/db.class.php ֆայլում․

Index: Registry/objects/db.class.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Registry/objects/db.class.php	(revision b1ffa3bbfce4e95ace7ed735e9412e9332e17d50)
+++ Registry/objects/db.class.php	(revision )
@@ -4,7 +4,7 @@
  * Управление БД
  * Предоставляет небольшую абстракцию от БД
  */
-class database {
+class db {
 
   /**
    * Позволяет множественное подключение к БД
\ No newline at end of file

Սահմանում ենք ստատիկ մեթոդներ այնտեղ, որտեղ պետք է, և վերանվանում ենք database դասը՝ Registry/registry.class.php-ում․

Index: Registry/registry.class.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Registry/registry.class.php	(revision b1ffa3bbfce4e95ace7ed735e9412e9332e17d50)
+++ Registry/registry.class.php	(revision )
@@ -69,15 +69,15 @@
      * @param String $key the key for the array
      * @return void
      */
-    public function storeObject( $object, $key )
+    public static function storeObject( $object, $key )
     {
-        require_once('objects/' . $object . '.class.php');
+        require_once('Registry/objects/' . $object . '.class.php');
         self::$objects[ $key ] = new $object( self::$instance );
     }
 
     public function storeCoreObjects()
     {
-      $this->storeObject('database', 'db' );
+      $this->storeObject('db', 'db' );
       $this->storeObject('template', 'template' );
     }
 
@@ -86,7 +86,7 @@
      * @param String $key the array key
      * @return object
      */
-    public function getObject( $key )
+    public static function getObject( $key )
     {
         if( is_object ( self::$objects[ $key ] ) )
         {
\ No newline at end of file

Պահանջվեց նաև ստեղծել db controller ֆայլ՝

Controllers/db/
Controllers/db/db.php

Շտկեցինք սխալը շաբլոնների կառավարման դասում՝ Registry/objects/template.class.php-ում․

Index: Registry/objects/template.class.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Registry/objects/template.class.php	(revision b1ffa3bbfce4e95ace7ed735e9412e9332e17d50)
+++ Registry/objects/template.class.php	(revision )
@@ -194,7 +194,7 @@

  public function parseTitle()
  {
-    $newContent = str_replace('<title>', '<title>'. $this->$page->getTitle(), $this->page->getContent() );
+    $newContent = str_replace('<title>', '<title>'. $this->page->getTitle(), $this->page->getContent() );
    $this->page->setContent( $newContent );
  }
\ No newline at end of file