ホームページ バックエンド開発 PHPチュートリアル zendframework クラスの自動ロードに対処する方法

zendframework クラスの自動ロードに対処する方法

Jun 13, 2016 pm 01:51 PM
application gt model zend

zendframeworkの自動クラスローディングについて
ディレクトリ構造

HTMLコード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
zf-demo 
  application
    controller
      IndexController.php
    models
      User.php
    services
    views
   Bootstrap.php

ログイン後にコピー

user.phpのクラス名はModel_Userで、IndexController.php内に$を呼び出すような文がありますuser = new Model_User();
実行時にエラーが報告されます
致命的なエラー: クラス 'Model_User' が D:lampsiteszf-demoapplicationcontrollersIndexController.php の 132 行目に見つかりません
オンラインで検索した後、回答
Bootstarp.php に _initAutoload メソッド
Bootstrap.php コード
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    protected function _initAutoload() {
        $moduleLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath' => APPLICATION_PATH));
        
        /** auto load */
        $autoloader = Zend_Loader_Autoloader::getInstance();
        $autoloader->setFallbackAutoloader(true);
        return $moduleLoader;
    }
  
}


ログイン後にコピー


を追加して再度実行すると、ユーザー クラスがロードされます

問題 :
私の理解によれば、zend の自動ロードメカニズムは、クラス名のアンダースコアをパス区切り文字に置き換えてから、include_path
の順序に従ってクラスをロードすることです。この場合、Model_User は Model/User.php に変換されてロードされますが、ディレクトリにはモデル フォルダーがなく、モデルのみが正常にロードされるのはなぜですか?誰か説明してもらえますか?

-----解決策--------------------------
ディスカッション

引用:

コードを見てください。

Application_Model_User は通常、次のようになります。あなたのパスは間違っています。

自動読み込み。1 つは上記の自動変換パスに基づいています。 2 つ目は、ディレクトリに従って関連するすべてのカテゴリを検索することです。

コントローラーでの自動ロードとブートストラップでの自動ロードでは同じクラスを使用できます。パスを指定するだけです。


user.php のクラス名は Applic にする必要があるということですね...

------解決策----------------------
通常、この種の不規則な名前空間は Zend_Loader_Autoloader_Resource を使用します。便宜上、フレームワーク アプリケーション自体の構造継承には Zend_Application_Module_Autoloader が実装されており、これは
次のクラスのソース コード

/***/
クラス Zend_Application_Module_Autoloader は Zend_Loader_Autoloader_Resource を拡張します
{
/**
* アプリケーション モジュール クラスのリソース ローダー
*
* @uses Zend_Loader_Autoloader_Resource
* @category Zend
* @package Zend_Application
* @subpackage Module
* @copyright Copyright ( c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd 新しい BSD ライセンス
 */
public function __construct($options)
{
parent::__construct($options) );
$this-> ;initDefaultResourceTypes();
}

/**
* コンストラクター
*
* @param array|Zend_Config $options
* @return void
*/
public function initDefaultResourceTypes()
{
$basePath = $this->getBasePath();
$this->addResourceTypes(array(
'dbtable' => array(
'namespace' => 'Model_DbTable',
'パス' => 'models/DbTable' ,
),
'mappers' => array(
'namespace' => 'Model_Mapper',
'path' => /mappers',
),
'form' => array(
'namespace' => 'Form',
'path' => 'forms',
) ,
'モデル' => ; array(
'名前空間' => 'モデル',
'パス' => 'モデル',
),
'プラグイン' = > array(
'名前空間' => 'プラグイン',
'パス' => 'プラグイン',
),
'サービス' =>名前空間' => 'サービス',
'パス' => 'サービス',

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

Python WSGI アプリケーションの原理は何ですか? Python WSGI アプリケーションの原理は何ですか? May 19, 2023 pm 01:25 PM

この記事が依存する Python 環境は次のとおりです: WSGI とは何ですか? WSGI は Web サーバー ユニバーサル ゲートウェイ インターフェイスとも呼ばれ、その正式名は webservergatewayinterface です。これは、Web サーバーと Web アプリケーションが Python で通信し、http リクエストと応答を処理する方法に関する標準を定義します。これは単なるプロトコル、仕様、標準であることに注意してください。この標準に従う必要はありません。前回の記事で書いたサーバー。 WSGIもアプリケーションとサーバーゲートウェイに分かれており、このうち有名なFlaskはアプリケーションに属し、uWSGIやwsgirefはサーバーゲートウェイに属します。個人的な感想、WSG

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

Trezor コールド ウォレット: モデル 1 およびモデル T の機能と使用ガイド Trezor コールド ウォレット: モデル 1 およびモデル T の機能と使用ガイド Jan 19, 2024 pm 04:12 PM

多くの集中型取引所で問題が発生した後、ますます多くの仮想通貨投資家が集中型取引所によってもたらされるリスクを軽減するために資産をコールドウォレットに移し始めました。この記事では、2014 年に最初のコールド ウォレットが発売されて以来、世界各国で販売されている世界最古のコールド ウォレット プロバイダーである Trezor について紹介します。 Trezor の製品には、2014 年に発売された Model One と、2018 年に発売された上級バージョンの Model T があります。以下では引き続き、この2製品と他のコールドウォレットの違いについて紹介していきます。 Trezor コールドウォレットとは何ですか? 2014 年、Trezor は最初のコールド ウォレット ModelOne を発売しました。一般的な BTC、ETH、USDT、その他の通貨に加えて、ウォレットは 1,000 以上の他の通貨もサポートしています。

Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Jul 29, 2023 am 09:24 AM

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

PHP 実装フレームワーク: Zend Framework 入門チュートリアル PHP 実装フレームワーク: Zend Framework 入門チュートリアル Jun 19, 2023 am 08:09 AM

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

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

See all articles