Php 在控制器类中获取用户定义的类

Php 在控制器类中获取用户定义的类,php,zend-framework,bootstrapping,Php,Zend Framework,Bootstrapping,我在zend应用程序中有一个用户定义类(默认) application/library/Custom\u/Custom\u Test.php <?php class CustomTest{ function testFunction($a) { return $a*2; } } ?> 我想在side indexController.php的getvalueAction()中使用它 我已尝试在[生产]的a

我在zend应用程序中有一个用户定义类(默认)

application/library/Custom\u/Custom\u Test.php

<?php

    class CustomTest{

        function testFunction($a) {

            return $a*2;
        }
    }

?>
我想在side indexController.php的getvalueAction()中使用它

我已尝试在[生产]的application.ini中包含以下行

autoloaderNamespaces.custom = "Custom_"
我不想使用简单的include函数,也不能在getvalueAction()中实例化它。怎么做

  • 使用netbeans
  • ubuntu 11.10
  • 我是新来的zend
多谢各位

PS:为了清晰起见,我将在下面展示我的代码

indexController.php

<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {}

    public function indexAction()
    {}

    public function getvalueAction() {
        $request = $this->getRequest();
        $numb = $request->getParam('numb');

        $result = Test::testFunction($numb);
        $this->view->assign('result',$result);
    }

    public function inputAction() {
        $this->view->assign('action','getvalue');
    }
}
Custom_Test.php

<?php

    class CustomTest{

        function testFunction($a) {

            return $a*2;
        }
    }

?>

在你的ini里

appnamespace = "Custom_"
这门课应该是这样的

Class Custom_Test{
 public static function foo(){
  return 'hai';
}

}
class Custom_Action_Helper_Test extends Zend_Action_Helper_Abstract
{
    public function random()
    {
        return 'foo';
    }
}
然后在任何操作中都可以调用
Custom_Test::foo()

在你的ini里

appnamespace = "Custom_"
这门课应该是这样的

Class Custom_Test{
 public static function foo(){
  return 'hai';
}

}
class Custom_Action_Helper_Test extends Zend_Action_Helper_Abstract
{
    public function random()
    {
        return 'foo';
    }
}

然后在任何操作中都可以调用
Custom_Test::foo()

application/library/Custom\u/Custom\u Test.php

i、 自定义文件夹中的e Test.php

在application.ini中添加此行,而不是在autoloadernamespace.custom=“custom”


然后,只需在您喜欢的任何地方创建一个实例。

application/library/Custom\u/Custom\u Test.php更改文件和文件夹的名称。

i、 自定义文件夹中的e Test.php

在application.ini中添加此行,而不是在autoloadernamespace.custom=“custom”


然后,只要在您喜欢的任何地方创建它的实例。

操作助手就是您所需要的

自从你说

我想在side indexController.php的getvalueAction()中使用它

<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {}

    public function indexAction()
    {}

    public function getvalueAction() {
        $request = $this->getRequest();
        $numb = $request->getParam('numb');

        $result = Test::testFunction($numb);
        $this->view->assign('result',$result);
    }

    public function inputAction() {
        $this->view->assign('action','getvalue');
    }
}
根据Zend Framework的官方网站

动作助手允许开发人员注入运行时和/或按需操作 扩展到任何操作控制器的功能 Zend_控制器_动作。行动助手旨在尽量减少必要性 扩展抽象动作控制器以注入公共 动作控制器功能

我假设您想要使用action helper,因为action helper是专门为此而设计的

第1步。 您需要告诉助手代理您的操作助手在哪里,我通常在application.ini文件中这样做,但您也可以在frontController或引导文件中这样做

#if you are using application.ini, in your application.ini add the following
resources.frontController.actionHelperPaths.Custom_Action_Helper = APPLICATION_PATH "/../library/Custom/helpers"
第二步:
创建Action Helper类时,您必须确保类
扩展Zend\u Controller\u Action\u Helper\u Abstract
,并将文件放在定义的Helper目录中(如果文件是
库/自定义/helpers

然后像这样创建动作助手

Class Custom_Test{
 public static function foo(){
  return 'hai';
}

}
class Custom_Action_Helper_Test extends Zend_Action_Helper_Abstract
{
    public function random()
    {
        return 'foo';
    }
}
现在,可以在任何控制器中使用助手。可以使用以下语法调用它

echo $this->_helper->Test->random();

希望这对您有所帮助。

行动助手是您所需要的

自从你说

我想在side indexController.php的getvalueAction()中使用它

<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {}

    public function indexAction()
    {}

    public function getvalueAction() {
        $request = $this->getRequest();
        $numb = $request->getParam('numb');

        $result = Test::testFunction($numb);
        $this->view->assign('result',$result);
    }

    public function inputAction() {
        $this->view->assign('action','getvalue');
    }
}
根据Zend Framework的官方网站

动作助手允许开发人员注入运行时和/或按需操作 扩展到任何操作控制器的功能 Zend_控制器_动作。行动助手旨在尽量减少必要性 扩展抽象动作控制器以注入公共 动作控制器功能

我假设您想要使用action helper,因为action helper是专门为此而设计的

第1步。 您需要告诉助手代理您的操作助手在哪里,我通常在application.ini文件中这样做,但您也可以在frontController或引导文件中这样做

#if you are using application.ini, in your application.ini add the following
resources.frontController.actionHelperPaths.Custom_Action_Helper = APPLICATION_PATH "/../library/Custom/helpers"
第二步:
创建Action Helper类时,您必须确保类
扩展Zend\u Controller\u Action\u Helper\u Abstract
,并将文件放在定义的Helper目录中(如果文件是
库/自定义/helpers

然后像这样创建动作助手

Class Custom_Test{
 public static function foo(){
  return 'hai';
}

}
class Custom_Action_Helper_Test extends Zend_Action_Helper_Abstract
{
    public function random()
    {
        return 'foo';
    }
}
现在,可以在任何控制器中使用助手。可以使用以下语法调用它

echo $this->_helper->Test->random();

希望这对您有所帮助。

您应该使用action helper。参考我的答案来解释这是真的。但我没能解决我的问题(尽管我投了他们一票)。但我会记住这一点您应该使用动作助手。参考我的答案来解释这是真的。但我没能解决我的问题(尽管我投了他们一票)。但我会记住这一点我像你说的那样试过了,但对我不起作用。但是非常感谢,我试过了,就像你说的,但对我不起作用。但是,非常感谢您提供了“resources.frontController.actionHelperPaths.Custom\u Action\u Helper=APPLICATION\u PATH”/../library/Custom/helpers”“提供服务器错误。为什么您在库目录中创建了正确的目录?在库中应该有一个名为Custom的目录,在Custom中应该有另一个名为helpers的目录?你得到的错误信息是什么?你把代码放在哪里?它应该在你的应用程序的[生产]部分。每件事都是你在正确的地方说的。还是不行。但有一个区别是“图书馆”的“图书馆”(L和L)不知道什么是对的?是的,试着给它取个合适的名字。如果您遇到任何错误,请发布错误代码。输入“resources.frontController.actionHelperPaths.Custom\u Action\u Helper=APPLICATION\u PATH”/../library/Custom/helpers“提供服务器错误。为什么您在库目录中创建了正确的目录?在库中应该有一个名为Custom的目录,在Custom中应该有另一个名为helpers的目录?你得到的错误信息是什么?你把代码放在哪里?它应该在你的应用程序的[生产]部分。每件事都是你在正确的地方说的。还是不行。但有一个区别是“图书馆”的“图书馆”(L和L)不知道什么是对的?是的,试试givi