Zend Framework:从不同的文件调用函数

时间:2011-10-15 17:29:46

标签: php zend-framework function instance

* * Edit2:找不到Core.php,因为Bootstrap.php需要包含Core.php     require_once'C:\ wamp \ www \ PhpProject1 \ application \ Core \ Core.php'; 解决了我的问题**


我正在使用zendframework,我为我的函数创建了一个带有Core / Core.php文件的新文件夹,我将在我的控制器和其他地方使用它。但是当我尝试在我的Core.php中测试一个函数时,什么都不会出现。我想我错误地调用了core.php,但我不确定错误是什么。

应用/控制器/

IndexController.php

class IndexController extends Zend_Controller_Action
{

     public function init()
    {
         $this->tournamentAction();
    }

   public function indexAction(){          

   }

    public function tournamentAction()
  {            
        $bleh = new Core();
        $this->view->ha = $bleh->yo();
        $this->renderScript('tournament/index.phtml');            
    }    
}

应用/核心/

core.php中

class Core{

    public function init(){

    }

    public function indexAction(){

    }
    public function yo(){
        $text = 'This is my function Yo';
        return $text;
    }

应用/视图/脚本/赛/ index.phtml

$this->ha;
echo "hello";

编辑:错误报告很好哈!这是我得到的错误。

 ! ) Fatal error: Class 'Core' not found in C:\wamp\www\PhpProject1\application\controllers\IndexController.php on line 19
Call Stack
#   Time    Memory  Function    Location
1   0.0006  678944  {main}( )   ..\index.php:0
2   0.0275  3090632 Zend_Application->run( )    ..\index.php:26
3   0.0275  3090632 Zend_Application_Bootstrap_Bootstrap->run( )    ..\Application.php:366
4   0.0275  3090728 Zend_Controller_Front->dispatch( )  ..\Bootstrap.php:97
5   0.0446  4801056 Zend_Controller_Dispatcher_Standard->dispatch( )    ..\Front.php:954
6   0.0456  4823424 Zend_Controller_Action->__construct( )  ..\Standard.php:268
7   0.0547  5211576 IndexController->init( )    ..\Action.php:133
8   0.0547  5211576 IndexController->tournamentAction( )    ..\IndexController.php:8

2 个答案:

答案 0 :(得分:1)

问题是自动加载器无法找到您的Core类。

通常我使用库文件夹来构建我的应用程序,其中所有模型和工具都以此结束。

在你的情况下,我会在库文件夹中创建一个名为MyProject的文件夹,在其中你可以放入你的Core.php类,你需要更正它的名字,这导致:

库/ MyProject的/ core.php中

class MyProject_Core{

public function init(){

}

public function indexAction(){

}
public function yo(){
    $text = 'This is my function Yo';
    return $text;
}

当然,你要以这种方式打电话给你的班级:

$coreInstance = new MyProject_Core();

将此功能放在您的应用程序/ Bootstrap.php中:

protected function _initAutoload()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace('MyProject_');
    $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath' => APPLICATION_PATH));
    return $autoloader;
}

然后Zend_Loader应该找到你的班级,没有任何问题。

答案 1 :(得分:0)

在你的view中:

$this->ha; // this doesn't do anything without an echo / print

你也说过:

  

我想我错误地调用了core.php,但我不确定错误是什么。

如果是这种情况,您应该启用错误报告。

在引导程序文件的顶部添加:

error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);