Zend Framework チュートリアル: モデルの基本ルールと使用法

高洛峰
リリース: 2017-01-03 13:47:00
オリジナル
1254 人が閲覧しました

この記事の例では、Zend Framework チュートリアルでのモデルの基本的なルールと使用法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

ここでは Zend のモデルについて説明します。実際、Zend でのモデル処理は非常に簡単です。

これは主にオートロード機能によるものです。他のフレームワークとは異なり、モデルに対して複雑な基本クラスが定義されます。

モデルを定義する場合は、特定の関数を使用する前にモデルの基本クラスを継承する必要があります。

モデルは Zend にカプセル化されていません。

その理由は、おそらく、モデルが主に特定のビジネス ロジックに関連しており、カプセル化が多すぎると傷が増えるだけであるためです。

Zend は、オートロード関数と名前空間関数を使用して、この問題を巧みに解決します。

zendframework プロジェクト model_demo1 を作成します

エラーを簡単に表示するには、次のように設定ファイル /model_demo1/application/configs/application.ini でエラー メッセージ スイッチをオンにします:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
ログイン後にコピー

次に、簡単に説明します。 zend のモデルについて話します:

1. デフォルトのモデル

標準の Web アプリには application/models などのディレクトリがあります。モデル ディレクトリに特定のクラスを定義すると、モデルがアプリのモデルの保存に使用されることがわかります。もちろん、次の条件を満たす場合は、zend が自動的にそれをロードします。

たとえば、zf コマンド ラインを使用して Test

zf create model Test
ログイン後にコピー

/www/model_demo1/application/ にモデルを作成します。 models/Test .php

プロジェクト プロファイル '/www/model_demo1/.zfproject.xml' を更新しています

プロジェクト ディレクトリを更新すると、次のファイル /model_demo1/application/models/Test.php が追加されたことがわかります

ファイルの内容は次のとおりです:

<?php
class Application_Model_Test
{}
ログイン後にコピー

Model を使用するには次のルールに従わなければならないことは難しくありません:

1) Application_Model_ で始まり、カスタマイズされたモデルのクラス名が続きます。

つまり、Web アプリケーションのモデルのディレクトリ構造は /model_demo1/application/models/Test.php です

対応する名前空間は Application_Model_Test です。

applicationはApplicationに対応します

modelsはmodelsに対応します

Testはモデルのクラスファイルの名前です。

制約に従ったクラスの名前は次のとおりです: class Application_Model_Test {

Application_Model_ を理解するのは難しくありません。このようなルールは、zend フレームワークの自動ロードと名前空間の規則に従います。

2).Application 名前空間

実際、Application は構成ファイルで構成したアプリケーションの名前空間でもあります。

設定ファイルのappnamespace = "Application"をappnamespace = "App"に変更した場合。

私たちのオリジナルのプログラムはエラーを報告します。理由は自明です。つまり、zend はそれほどスマートではありません。

原理を詳しく調べたい場合は、おそらくこの関数を完成させる次のクラスです:

Zend_Application_Bootstrap_Bootstrap
Zend_Application_Module_Autoloader
ログイン後にコピー


2. カスタム名前空間

はデフォルトの名前空間です。たとえば、/model_demo1/library/Zend/Test.php

にクラス Zend_Test

<?php
class Zend_Test{
 static public function echoZendTest(){
  echo &#39;ZendTest<br/>&#39;;
 }
}
ログイン後にコピー

を作成すると、何も操作せずにプログラムで使用できます。例: Zend_Test::echoZendTest();

名前空間をカスタマイズする 2 つの簡単な方法を次に示します:


1) application.ini 設定ファイルを使用します

デフォルトの名前空間

appnamespace = "Application"
ログイン後にコピー

カスタム名前空間

autoloadernamespaces.app = "App_"
autoloadernamespaces.my = "MyApp_"
ログイン後にコピー

または

autoloadernamespaces[] = "App_"
autoloadernamespaces[] = "MyApp_"
ログイン後にコピー

具体的な実装クラスは、zendapplication.php

rreee

2)です。 AppTest/Test.php

public function setOptions(array $options)
{
 if (!empty($options[&#39;config&#39;])) {
  if (is_array($options[&#39;config&#39;])) {
   $_options = array();
   foreach ($options[&#39;config&#39;] as $tmp) {
    $_options = $this->mergeOptions($_options, $this->_loadConfig($tmp));
   }
   $options = $this->mergeOptions($_options, $options);
  } else {
   $options = $this->mergeOptions($this->_loadConfig($options[&#39;config&#39;]), $options);
  }
 }
 $this->_options = $options;
 $options = array_change_key_case($options, CASE_LOWER);
 $this->_optionKeys = array_keys($options);
 if (!empty($options[&#39;phpsettings&#39;])) {
  $this->setPhpSettings($options[&#39;phpsettings&#39;]);
 }
 if (!empty($options[&#39;includepaths&#39;])) {
  $this->setIncludePaths($options[&#39;includepaths&#39;]);
 }
 if (!empty($options[&#39;autoloadernamespaces&#39;])) {
  $this->setAutoloaderNamespaces($options[&#39;autoloadernamespaces&#39;]);
 }
ログイン後にコピー

/model_demo1/application/controllers/IndexController.php

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
 protected function _initAutoload() {
  $app = $this->getApplication ();
  $namespaces = array (
    &#39;AppTest&#39;
  );
  $app->setAutoloaderNamespaces ( $namespaces );
  return $app;
 }
}
ログイン後にコピー

3) 特定のクラスを使用して自動読み込みを完了します

/model_demo1/application/models/ModelTest.php

<?php
class AppTest_Test{
 static public function echoAppTestTest(){
  echo &#39;AppTestTest<br/>&#39;;
 }
}
ログイン後にコピー

/model_demo1/library/AppTest2/Test.php

AppTest_Test::echoAppTestTest();
ログイン後にコピー

この記事が PHP プログラミングの皆様のお役に立てれば幸いです。

Zend Framework チュートリアルのモデルの基本ルールと使用法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート