标签: zend-framework

如何从控制器访问Zend Framework应用程序的配置?

我有一个基于快速启动设置的Zend Framework应用程序.

我已经让演示工作了,现在我正在实例化一个新的模型类来做一些真正的工作.在我的控制器中,我想将配置参数(在application.ini中指定)传递给我的模型构造函数,如下所示:

class My_UserController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $options = $this->getFrontController()->getParam('bootstrap')->getApplication()->getOptions();
        $manager = new My_Model_Manager($options['my']);
        $this->view->items = $manager->getItems();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的例子允许访问选项,但似乎非常圆.有更好的方法来访问配置吗?

php zend-framework

24
推荐指数
3
解决办法
5万
查看次数

Zend Framework:如何删除多个事物都属实的表行?

通常,这对我有用:

$db = Zend_Db_Table::getDefaultAdapter();
$where = $db->quoteInto('id = ?', $id);
$db->delete('tablename', $where);
Run Code Online (Sandbox Code Playgroud)

但我必须匹配两个ID.所以我真的不知道如何构建它.

WHERE first_id = 'id1' AND second_id = 'id2'
Run Code Online (Sandbox Code Playgroud)

那么我如何使用Zend Framework做到这一点?

zend-framework zend-db-table zend-db

24
推荐指数
2
解决办法
5万
查看次数

生成PHPUnit代码覆盖率报告时无法重新声明类错误

使用Zend Framework 1.10和Doctrine 2(Beta1)启动项目.我在自己的库代码中使用命名空间.

生成代码覆盖率报告时,我收到有关重新声明类的致命错误.为了提供更多信息,我在我的phpunit可执行文件中注释掉了xdebug_disable()调用,这样你就可以看到函数trace(由于输出太多而禁用了局部变量输出).

这是我的终端输出:

$ phpunit
PHPUnit 3.4.12 by Sebastian Bergmann.

........

Time: 4 seconds, Memory: 16.50Mb

OK (8 tests, 14 assertions)

Generating code coverage report, this may take a moment.PHP Fatal error:  Cannot redeclare class Cob\Application\Resource\HelperBroker in /Users/Cobby/Sites/project/trunk/code/library/Cob/Application/Resource/HelperBroker.php on line 93
PHP Stack trace:
PHP   1. {main}() /usr/local/zend/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /usr/local/zend/bin/phpunit:54
PHP   3. PHPUnit_TextUI_Command->run() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:146
PHP   4. PHPUnit_TextUI_TestRunner->doRun() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:213
PHP   5. PHPUnit_Util_Report::render() /usr/local/zend/share/pear/PHPUnit/TextUI/TestRunner.php:478
PHP   6. PHPUnit_Framework_TestResult->getCodeCoverageInformation() /usr/local/zend/share/pear/PHPUnit/Util/Report.php:97
PHP   7. PHPUnit_Util_Filter::getFilteredCodeCoverage() /usr/local/zend/share/pear/PHPUnit/Framework/TestResult.php:623

Fatal error: …

php phpunit zend-framework code-coverage

24
推荐指数
1
解决办法
2万
查看次数

安全字符串比较功能

我刚刚在Zend Framework的HTTP Auth库中遇到了这段代码.它似乎使用特殊的字符串比较功能,使其更安全.但是,我不太明白这些评论.有人可以解释为什么这个功能比做的更安全$a == $b吗?

/**
 * Securely compare two strings for equality while avoided C level memcmp()
 * optimisations capable of leaking timing information useful to an attacker
 * attempting to iteratively guess the unknown string (e.g. password) being
 * compared against.
 *
 * @param string $a
 * @param string $b
 * @return bool
 */
protected function _secureStringCompare($a, $b)
{
    if (strlen($a) !== strlen($b)) {
        return false;
    }
    $result = 0;
    for ($i = 0; $i < …
Run Code Online (Sandbox Code Playgroud)

php security string zend-framework compare

24
推荐指数
1
解决办法
3558
查看次数

使用Zend Framework处理输入(Post,get等)

我在zend代码上重新分解php,所有的代码都充满了$_GET["this"]$_POST["that"].我一直使用的更phpish $this->_request->getPost('this')$this->_request->getQuery('that')(这一个是没有这么多getGet的getquery insteado逻辑).

所以我想知道我的方法是否更安全/更好/更容易保持.我在Zend Framework文档中读到,您必须验证自己的输入,因为请求对象不会这样做.

这让我有两个问题:

  • 这两个最好的是什么?(或者如果还有另一种更好的方式)
  • 使用此方法验证php输入的最佳做法是什么?

谢谢!

php post zend-framework get input

23
推荐指数
3
解决办法
4万
查看次数

如何在Zend Framework中抛出404异常

我正在尝试使用Zend_Controller_Plugin_ErrorHandler来处理我的错误404个案例.根据文档,插件具有常量,可以用来匹配异常类型并相应地处理它们.例如

switch ($errors->type) {
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
            // 404 error -- controller or action not found
Run Code Online (Sandbox Code Playgroud)

有谁知道如何专门创建这些类型的例外?

php zend-framework

23
推荐指数
1
解决办法
3万
查看次数

如何只从Zend返回JSON

我正在为我的项目使用Zend Framework 1.x. 我想创建一个Web服务只返回调用函数的JSON字符串.我尝试使用Zend_Controller_Action并应用这些方法:

1.

$this->getResponse()
     ->setHeader('Content-type', 'text/plain')
     ->setBody(json_encode($arrResult));
Run Code Online (Sandbox Code Playgroud)

2.

$this->_helper->getHelper('contextSwitch')
              ->addActionContext('nctpaymenthandler', 'json')
              ->initContext();
Run Code Online (Sandbox Code Playgroud)

3.

header('Content-type: application/json');
Run Code Online (Sandbox Code Playgroud)

4.

$this->_response->setHeader('Content-type', 'application/json');
Run Code Online (Sandbox Code Playgroud)

5.

echo Zend_Json::encode($arrResult);
exit;
Run Code Online (Sandbox Code Playgroud)

6.

return json_encode($arrResult);
Run Code Online (Sandbox Code Playgroud)

7.

$this->view->_response = $arrResult;
Run Code Online (Sandbox Code Playgroud)

但是当我使用cURL获取结果时,它返回了一些由一些HTML标记包围的JSON字符串.然后我尝试Zend_Rest_Controller使用上面的选项.它仍然没有成功.

PS:上面的大多数方法来自Stack Overflow上提出的问题.

php rest json web-services zend-framework

23
推荐指数
3
解决办法
3万
查看次数

使用Zend Framework创建cronjob

我正在尝试编写一个cronjob控制器,所以我可以调用一个网站并执行所有模块cronjob.php.现在我的问题是我该怎么做?

卷曲是一种选择,所以我也可以计算错误和成功吗?

[更新]

我想我还没有解释得够.

我想要做的是有一个文件,我可以从http:// server/cronjob调用,然后让它执行每个/application/modules/*/controller/CronjobController.php或者有另一种方法这样做所有的cronjobs不在一个地方,而是在模块所在的同一个地方.这将为我提供优势,如果模块不存在,它不会尝试运行其cronjob.

现在我的问题是你将如何执行CronjobController的所有模块,或者你会以完全不同的方式执行它,因此它仍然保持模块化?

我希望能够分发出多少cronjobs成功运行,有多少没有

php cron zend-framework command-line-interface

22
推荐指数
3
解决办法
2万
查看次数

如何使用Zend_Db添加多行?

我有一个数组的信息看起来或多或少像这样:

$data[] = array('content'=>'asd');
$data[] = array('content'=>'asdf');
Run Code Online (Sandbox Code Playgroud)

我想将两个条目添加到数据库中.

$db->insert('table', $data);
Run Code Online (Sandbox Code Playgroud)

不添加两个条目.我究竟做错了什么?我必须使用Zend_ Db_Table吗?

$data = array('content'=>'asdf');
$db->insert('table', $data);
Run Code Online (Sandbox Code Playgroud)

当然是有效的

php mysql zend-framework zend-db-table zend-db

22
推荐指数
3
解决办法
3万
查看次数

Zend框架 - 我为什么要使用数据映射器/ Db_Table_Row?

扩展问题:为什么我应该使用数据映射器/ Db_Table_Row,因为DbTable能够处理大多数数据操作的基本任务.

我目前正在学习ZF v1.11

对于数据库操作,我为每个表创建了DbTable.例如,"users"表由Application_Model_DbTable_Users表示,其中没有附加代码.

在操作数据时,我可以使用:

<?php
$uTable = new Application_Model_DbTable_Users();
$newUid = $uTable->insert(array('name'=>'Old Name', 'email'=>''));
$user = $uTable->find($newUid)->current();

// Then I can use $user which is instance of Table_Row
$user->name = "New Name";
$user->email = "email@addr.com";
$user->save();
Run Code Online (Sandbox Code Playgroud)

我的问题是,何时需要定义一个行类(假设在ZF-Tutorials中将Table_Row称为DataMapper)

// By, adding this to the DbTable class
protected $_rowClass = 'Application_Model_User';
Run Code Online (Sandbox Code Playgroud)

为每个实体设置Row类有什么好处?任何人都可以指出我的最佳做法.

php database design-patterns zend-framework zend-db-table

22
推荐指数
2
解决办法
8332
查看次数