Zend Framework チュートリアル、zendautoloading_PHP チュートリアルでのオートロードの使用法の詳細な説明
Zend Framework チュートリアル、zendautoloading でのオートローディングの使用法の詳細な説明
この記事では、Zend Framework チュートリアルでのオートローディングの使用法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
1. 概要
オートローディングは、PHP コードを手動で記述する必要をなくすメカニズムです。 「PHP 手動オートローディング」を参照してください。オートローダーが定義されると、未定義のクラスまたはインターフェイスを使用しようとした場合に自動的に呼び出されます。
自動読み込みを使用すると、プロジェクト内のクラスがどこに保存されているかを心配する必要がありません。明確に定義されたオートローダーを使用すると、現在のクラス ファイルを基準としたクラス ファイルの位置を考える必要がなく、クラスを使用するだけで、オートローダーが自動的にファイルを見つけます。
さらに、自動ロードにより、ロードされるのは 1 回だけになるため、パフォーマンスが向上します。そのため、require_once() の代わりに使用できます。
Zend Framework はオートロードの使用を奨励し、コード ライブラリとアプリケーション コードを自動的にロードするための多くのツールを提供します。ここでは、これらのツールとその効果的な使用方法について説明します。
自動読み込みの実装規約
クラスの命名規則
Zend Framework は、クラス名とファイル システム間の 1:1 の関係である PEAR のアイデアを借用しています。単純に、ディレクトリ区切り文字をファイルへのパスを表すアンダースコア文字 (「_」) に置き換え、接尾辞「.php」を追加します。たとえば、クラス「Foo_Bar_Baz」は、ファイル システム上の「Foo/Bar/Baz.php」に対応します。クラスの場所が PHP の include_path を介して設定されていると仮定すると、これにより、include_path に設定されたパスに相対的な include() および require() を介してファイル名を見つけることができます。
また、ベンダー名またはプロジェクト名をプレフィックスとして使用することをお勧めします。これは、作成するすべてのクラスに共通のクラス接頭辞が付いていることを意味します。たとえば、Zend Framework のすべてのコードには「Zend_」という接頭辞が付けられます。この命名規則は、名前の競合を防ぐのに役立ちます。 ZendFramework では、「名前空間」接頭辞をよく参照しますが、PHP のローカル名前空間と混同しないように注意してください。
オートローダーの設計規約
Zend Framework は Zend_Loader_Autoloader による自動ロードをサポートしており、主に次の目標と設計要素を提供します。
名前空間のマッチングを提供します。クラスの名前空間プレフィックスが未登録の名前空間の場合、FALSE が返されます。オートローダーを代替オートローダーとして定義できるようにします。チームが広範囲に分散している場合や、未定義の名前空間プレフィックスを使用している場合は、任意の名前空間プレフィックスとの一致を試みます。ただし、この方法は不要な検索が発生する可能性があるため、お勧めできません。
エラー プロンプトの抑制をオンにできます。 したがって、デフォルトではオフになっている必要があります。開発段階で有効にすることができます。
SPL を使用したコールバック チェーンの自動ロードを許可します。この目的は、追加のオートローダーを指定できるようにすることです。
2. 使用方法:
通常は、含まれるクラスにニーズを導入してインスタンス化するだけです。 Zend_Loader_Autoloader で採用されているシングルトン モードにより、getInstance() メソッドを使用してインスタンスを取得できます。リーリー
デフォルトでは、名前空間プレフィックス「Zend_」または「ZendX_」を持つクラスはすべてロードできますが、include_path が指定されていることを確認してください。
別の名前空間プレフィックスを使用したい場合はどうすればよいでしょうか?最も簡単な方法は、 registerNamespace() メソッドを呼び出すことです。これを行うには、単一の名前空間プレフィックスまたは配列を渡します:
リーリー
リーリー
(注: この方法は推奨されません。使用しないようにしてください)。Zend_Loader_Autoloader の内部実装は Zend_Loader::loadClass() を使用してクラスをロードします。このメソッドは include() を使用して、指定されたクラス ファイルのロードを試みます。 include() はブール値を返し、失敗した場合は FALSE を返し、PHP 警告も発行します。 次の問題が発生する可能性があります:
display_errors が有効になっている場合、出力に警告が含まれます。
設定したerror_reportingレベルに応じて、ログに出力することもできます。
これらのエラー メッセージは次のように抑制できます: (ただし、display_errors が有効になっている場合、エラー ログは常に表示されることに注意してください。)
リーリー
ZendFramework/
|-- 1.9.2/
| |-- 図書館/
|-- ZendFramework-1.9.1-minimal/
| |-- 図書館/
|-- 1.8.4PL1/
| |-- 図書館/
|-- 1.8.4/
| |-- 図書館/
|-- ZendFramework-1.8.3/
| |-- 図書館/
|-- 1.7.8/
| |-- 図書館/
|-- 1.7.7/
| |-- 図書館/
|-- 1.7.6/
| |-- 図書館/
リーリー
リーリー
リーリー
[production] autoloaderZfPath = "path/to/ZendFramework" autoloaderZfVersion = "1.7.7" [qa] autoloaderZfVersion = "1.8" [development] autoloaderZfVersion = "latest"
Autoloader接口
注:命名空间前缀和PHP命名空间
PHP5.3已经发布。该版本中,PHP现在已经正式支持命名空间。
然而,Zend Framework的命名空间和PHP 5.3的命名空间完全不同的。 Zend Framework中,提到的“命名空间”,是指一个类前缀。例如,所有的Zend Framework的类名称的前缀“Zend_”。 这是我们指定的“命名空间”。
在Zend Framework 2.0.0使用了原生的PHP命名空间。
自动加载器除了能够指定任意回调以外,Zend Framework还定义了一个需要自动加载类实现的接口Zend_Loader_Autoloader_Interface:
interface Zend_Loader_Autoloader_Interface { public function autoload($class); }
如果您希望在Zend Framework中使用自定义的自动加载器,可以使用 Zend_Loader_Autoloader的 pushAutoloader()和unshiftAutoloader()方法。
通过这些方法将在Zend Framework的内部自动装载器之后追加或之前使用自定义的加载器。
每个方法接受一个可选的第二个参数,类的命名空间前缀。自动加载器只查找给定的类前缀。如果不是指定的类前缀,将跳过自动加载器 , 这可能是一种性能改进方式。
当使用这个接口时,你需要传递类实例到Zend_Loader_Autoloader类的pushAutoloader()和unshiftAutoloader()方法,具体如下:
// Append function 'my_autoloader' to the stack, // to manage classes with the prefix 'My_': $loader->pushAutoloader('my_autoloader', 'My_'); // Prepend static method Foo_Loader::autoload() to the stack, // to manage classes with the prefix 'Foo_': $loader->unshiftAutoloader(array('Foo_Loader', 'autoload'), 'Foo_'); // Assume Foo_Autoloader implements Zend_Loader_Autoloader_Interface: $foo = new Foo_Autoloader(); $autoloader->pushAutoloader($foo, 'Foo_');
Zend_Loader_Autoloader的相关方法
Method | Return Value | Parameters | Description |
---|---|---|---|
getInstance() | Zend_Loader_Autoloader | N/A |
获取实例 |
resetInstance() | <font color="#000000" face="NSimsun">void</font> |
N/A |
重置Zend_Loader_Autoloadersingleton实例的状态,恢复它的原始状态,注销所有的自动加载器回调和所有注册的命名空间。 |
autoload($class) | <font color="#000000"><font face="NSimsun">string|<strong><tt>FALSE</tt></strong></font></font> |
|
试图加载一个类。 |
setDefaultAutoloader($callback) | Zend_Loader_Autoloader |
|
指定默认的加载器回调 |
getDefaultAutoloader() | <font color="#000000" face="NSimsun">callback</font> |
N/A |
获取默认的加载器接口;默认是Zend_Loader::loadClass(). |
setAutoloaders(array $autoloaders) | Zend_Loader_Autoloader |
|
オートローダースタック内の特定のオートローダーリストを使用するように設定します。オートローダー リストの各項目は PHP コールバックである必要があります。 |
getAutoloaders() | 配列 | 該当なし |
|
getNamespaceAutoloaders($namespace) | 配列 |
|
登録されているすべてのオートローダーを取得して、特定の名前空間をロードします。 |
名前空間を登録する($namespace) | Zend_Loader_Autoloader |
|
名前空間を登録します。$namespaceが文字列の場合は、その名前空間を登録します。文字列の配列の場合は、それぞれを名前空間として登録します。 |
Namespace($namespace)の登録を解除する | Zend_Loader_Autoloader |
|
|
getRegisteredNamespaces() | 配列 | 該当なし
|
|
suppressNotFoundWarnings($flag = null) |
<font color="#000000" face="NSimsun">boolean|Zend_Loader_Autoloader</font>
|
|
エラーメッセージ |
setFallbackAutoloader($flag) | Zend_Loader_Autoloader |
|
|
はFallbackAutoloader()です | ブール | 該当なし |
|
getClassAutoloaders($class) | 配列 |
|
|
unshiftAutoloader($callback, $namespace = '') | Zend_Loader_Autoloader |
|
|
pushAutoloader($callback, $namespace = '') | Zend_Loader_Autoloader |
|
|
removeAutoloader($callback, $namespace = '') | Zend_Loader_Autoloader |
|
より zend 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「Zend FrameWork フレームワーク入門チュートリアル」、「php 優れた開発フレームワークの概要」、「Yii フレームワークの紹介と一般的なテクニックの概要」、「ThinkPHP」入門チュートリアル』『PHPオブジェクト指向プログラミング入門チュートリアル』『php+mysqlデータベース操作入門チュートリアル』『php共通データベース操作スキルまとめ』
この記事が PHP プログラミングのすべての人に役立つことを願っています。
興味がありそうな記事:
- Zend Framework チュートリアルのリソース自動読み込みの使用例
- Zend Framework チュートリアルでの MVC フレームワークのコントローラー使用状況の分析
- Zend Framework チュートリアルの関数 Zend_Controller_Router による詳細な説明
- Zend Framework チュートリアル Zend_Controller_Pluginプラグインの使用方法 詳細な説明
- Zend Framework チュートリアル: レスポンス オブジェクト Zend_Controller_Response インスタンスのカプセル化の詳細説明
- Zend Framework チュートリアル: リクエスト オブジェクト Zend_Controller_Request インスタンスのカプセル化の詳細説明
- Zend Framework チュートリアル:アクションの基本クラス Zend_Controller_Action
- Zend Framework チュートリアル: ディスパッチャ Zend_Controller_Dispatcher ソリューションの詳細な使用法
- Zend Framework チュートリアルでのフロントエンド コントローラー Zend_Controller_Front の使用法の詳細な説明
- Zend Framework チュートリアルでのビュー コンポーネント Zend_View の使用法の詳細な説明
- Zend Framework チュートリアルでのモデル使用の簡単な例

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









開発者とエンド ユーザーが Windows 上で最新バージョンのアプリケーションを実行するには、.NET Framework 4 が必要です。しかし、.NET Framework 4 のダウンロードとインストール中に、多くのユーザーから、インストーラーが途中で停止し、「ダウンロードがエラー コード 0x800c0006 で失敗したため、.NET Framework 4 はインストールされていません」というエラー メッセージが表示されるという苦情が寄せられました。デバイスに .NETFramework4 をインストールしているときにもこの問題が発生する場合は、正しい場所にいます。

Windows 11 または Windows 10 PC でアップグレードまたはアップデートの問題が発生すると、通常、失敗の背後にある実際の理由を示すエラー コードが表示されます。ただし、エラー コードが表示されずにアップグレードまたはアップデートが失敗すると、混乱が生じることがあります。便利なエラー コードを使用すると、問題の場所が正確にわかるので、修正を試みることができます。ただし、エラー コードが表示されないため、問題を特定して解決することが困難になります。エラーの背後にある理由を見つけるだけでも多くの時間がかかります。この場合、Microsoft が提供する SetupDiag という専用ツールを使用すると、エラーの背後にある本当の理由を簡単に特定できます。
![SCNotification が動作を停止しました [問題を解決する 5 つのステップ]](https://img.php.cn/upload/article/000/887/227/168433050522031.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Windows ユーザーは、コンピュータを起動するたびに「SCNotification は動作を停止しました」というエラーに遭遇する可能性があります。 SCNotification.exe は Microsoft システム通知ファイルであり、アクセス許可エラーやネットワーク障害が原因で PC を起動するたびにクラッシュします。このエラーは、問題のあるイベント名でも知られています。したがって、これは SCNotification が動作を停止したということではなく、バグ clr20r3 として認識される可能性があります。この記事では、SCNotification が動作を停止した問題を修正して再び悩まされないようにするために必要なすべての手順を説明します。 SCNotification.eとは何ですか

Microsoft.NET バージョン 4.5.2、4.6、または 4.6.1 をインストールしている Microsoft Windows ユーザーが、将来の製品更新を通じて Microsoft にフレームワークをサポートさせることを希望する場合は、新しいバージョンの Microsoft Framework をインストールする必要があります。 Microsoft によると、3 つのフレームワークはすべて 2022 年 4 月 26 日にサポートを終了します。サポート期限が終了すると、製品は「セキュリティ修正またはテクニカル サポート」を受けられなくなります。ほとんどのホーム デバイスは、Windows アップデートを通じて最新の状態に保たれます。これらのデバイスには、.NET Framework 4.8 などの新しいバージョンのフレームワークがすでにインストールされています。自動的に更新されないデバイスは、

Windows 11 に KB5012643 をインストールしたユーザーに影響を与える新しいセーフ モードのバグについてお話ししてから 1 週間が経過しました。このやっかいな問題は、Microsoft が発売日に投稿した既知の問題のリストには載っていなかったので、誰もが驚きました。さて、事態がこれ以上悪化するはずはないと思ったそのとき、Microsoft は、この累積的な更新プログラムをインストールしたユーザーに別の爆弾を投下します。 Windows 11 Build 22000.652 はさらなる問題を引き起こす そこで同社は、Windows 11 ユーザーに対し、一部の .NET Framework 3.5 アプリケーションの起動と使用に問題が発生する可能性があると警告しています。おなじみですね?でも驚かないでください

PHP 実装フレームワーク: ZendFramework 入門チュートリアル ZendFramework は、PHP によって開発されたオープン ソースの Web サイト フレームワークであり、現在 ZendTechnologies によって保守されています。ZendFramework は、MVC デザイン パターンを採用し、Web2.0 アプリケーションと Web サーブの実装に役立つ一連の再利用可能なコード ライブラリを提供します。 。 ZendFramework は PHP 開発者に非常に人気があり、尊敬されており、幅広い機能を備えています。

Zend Framework でのアクセス許可制御に ACL (AccessControlList) を使用する方法 はじめに: Web アプリケーションでは、アクセス許可制御は重要な機能です。これにより、ユーザーはアクセスを許可されたページと機能にのみアクセスできるようになり、不正アクセスが防止されます。 Zend フレームワークは、ACL (AccessControlList) コンポーネントを使用してアクセス許可制御を実装する便利な方法を提供します。この記事では、Zend Framework で ACL を使用する方法を紹介します。

12月9日のニュースによると、Cooler Masterは最近、台北コンピューティングショーでのデモンストレーションイベントで、ノートブックモジュラーソリューションプロバイダーのFrameworkと協力して、ミニシャーシキットをデモしました。このキットのユニークな点は、マザーボードと互換性があり、マザーボードを取り付けることができることです。フレームワークノートから。現在、この製品は市場で販売が開始されており、価格は39ドル、現在の為替レートで約279元に相当します。このシャーシキットの型番は「frameWORKMAINBOARDCASE」となります。デザイン面では、わずか297x133x15mmという究極のコンパクトさと実用性を実現しています。そのオリジナルのデザインは、フレームワーク ノートブックにシームレスに接続できるようにすることです。
