无法在zend框架中加载模型

时间:2014-12-03 16:10:25

标签: php zend-framework

我无法在应用程序文件夹中的文件中加载模型。我的zend结构就像这样

project

-- application

       --configs

       --controllers

       --models

       --views

      --cron_file.php

--libraray

--index.php
>
--htaccess

并在我的cron文件中加载我给出的模型

    define('APPLICATION_PATH', realpath(dirname(__FILE__)));
    set_include_path(APPLICATION_PATH . '/../library'.PATH_SEPARATOR .APPLICATION_PATH.'/models'.PATH_SEPARATOR.get_include_path());

       $mt= new Model_Modelname;
        $mt->functionname();

如果我执行这样的文件http://hostname/project/application/cron_file.php 我收到这样的错误

Warning: include_once(Model\Modelname.php): failed to open stream: No such file or directory in C:\xampp\htdocs\project\library\Zend\Loader.php on line 83

Warning: include_once(): Failed opening 'Model\Modelaname.php' for inclusion (include_path='C:\xampp\htdocs\project\application/../library;C:\xampp\htdocs\project\application/models;.;C:\xampp\php\PEAR') in C:\xampp\htdocs\project\library\Zend\Loader.php on line 83

Fatal error: Class 'Model_Modelname' not found in C:\xampp\htdocs\project\application\cron_file.php on line 75

请帮我解决这个问题。感谢

1 个答案:

答案 0 :(得分:0)

您可能已经注意到,应用程序文件夹中的文件不符合正常的自动加载标准(例如,文件夹为modelsforms,但其中的类名为model和{{1 }})。您需要将资源加载器(form)与这些规则一起添加到自动加载器。由于我们希望使用Zend应用程序的标准规则,因此我们可以使用bulid-in资源 - Zend_Loader_Autoloader_Resource

Zend_Application_Module_Autoloader

现在,您可以在Zend中加载类似于define('APPLICATION_PATH', realpath(dirname(__FILE__))); //application folder path require_once 'Zend/Loader/Autoloader.php'; //you might need to add Zend library to php path $al = Zend_Loader_Autoloader::getInstance(); $al->registerNamespace('Application'); $rl = new Zend_Application_Module_Autoloader(array( 'namespace' => 'Application', 'basePath' => APPLICATION_PATH, ));

的类