我在使用PHPUnit模拟PDO对象时遇到困难.
网上似乎没有太多关于我的问题的信息,但是我可以收集的信息:
通过在单元测试中添加以下行,有一个旨在防止此行为的功能:
class MyTest extends PHPUnit_Framework_TestCase
{
protected $backupGlobals = FALSE;
// ...
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://sebastian-bergmann.de/archives/797-Global-Variables-and-PHPUnit.html
这不适合我,我的测试仍然会产生错误.
完整的测试代码:
class MyTest extends PHPUnit_Framework_TestCase
{
/**
* @var MyTest
*/
private $MyTestr;
protected $backupGlobals = FALSE;
/**
* Prepares the environment before running a test.
*/
protected function setUp()
{
parent::setUp();
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown()
{
parent::tearDown();
}
public function __construct()
{
$this->backupGlobals = …
Run Code Online (Sandbox Code Playgroud) 我希望能够在DateTime
PHPUnit或Behat Test的持续时间内为每个实例化实例设置时间.
我正在测试与时间相关的业务逻辑.例如,类中的方法仅返回过去或将来的事件.
如果可能的话,我不想这样做:
写一个包装器DateTime
并使用它代替DateTime
整个代码.这将涉及重写我当前的代码库.
每次运行测试/套件时动态生成数据集.
所以问题是:是否有可能覆盖DateTime
s行为以始终在请求时提供特定时间?
我正在尝试使用Silex应用程序中的twig呈现Symfony表单.我正在使用Symfony 2 Form库,Symfony Bridge Twig Forms Extension和Twig.
这是我的bootsrap文件:
require_once __DIR__ . '/../app/silex.phar';
$app = new Silex\Application();
$app['debug'] = true;
// Set up the autoloader
require_once __DIR__ . '/../app/vendor/.composer/autoload.php';
// Load Configuration into container
$parser = new Symfony\Component\Yaml\Parser();
$config = $parser->parse(file_get_contents(__DIR__ . '/../app/config/config.yml'));
$app['config'] = $config;
// Set up Symfony bridge (nice twig functions)
$app->register(new Silex\Provider\SymfonyBridgesServiceProvider(), array(
'symfony_bridges.class_path' => __DIR__ . '/vendor/symfony/twig-bridge',
));
// Set Up Templating
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__ . '/../app/views',
'twig.class_path' => __DIR__ . '/../app/vendor/twig/twig/lib',
)); …
Run Code Online (Sandbox Code Playgroud) 我在使PDO_MYSQL工作时遇到了实际问题.
我开始只是尝试通过PECL安装PDO_MYSQL驱动程序,但是当这不起作用时,我仔细查看是否有任何问题报告.似乎PDO的嵌入版本与PDO_MYSQL之间可能存在冲突.为此,我决定从PECL重新安装它的所有依赖项.
环境:
操作系统:Ubuntu
PHP Ver:5.1.6(由于客户端环境无法升级)
程序如下:
PECL uninstall PDO_MYSQL
PECL uninstall PDO
PECL uninstall mysql
PECL install mysql
PECL install PDO
PECL install PDO_MYSQL
Lines Added to PHP.ini
extension=mysql.so
extension=pdo.so
extension=pdo_mysql.so
apachectl restart
[warn] php5_module is already loaded, skipping
Run Code Online (Sandbox Code Playgroud)
然后我检查PHPINFO以查看安装了哪些模块.我知道了:
PDO drivers sqlite2
Run Code Online (Sandbox Code Playgroud)
而已!
如果任何人可以提出任何解决方案,我将深表感激.我需要MYSQL PDO驱动程序来为即将到来的项目运行zend框架......是的,由于PHP版本,我必须使用v1.6.
我注意到今天我设置了我的第一个FB应用程序(在facebook中访问的iframe应用程序),通过facebook向它发出的所有请求都是HTTP POST而不是GET请求.这有什么理由吗?如果我想实现HTTP缓存怎么办?
我刚开始在FB平台上开发,请原谅我,如果这是一个显而易见的问题,但我用Google搜索并找不到答案.
在尝试对API进行身份验证时,我正在使用PECL OAuth.
示例代码:
<?php
$requestUri = 'http://openapi.lovefilm.com/oauth/request';
$consumerKey = 'MYCONSUMERKEY';
$consumerSecret = 'MYSECRET';
$oauth = new OAuth($consumerKey, $consumerSecret);
$oauth->setAuthType(OAUTH_AUTH_TYPE_AUTHORIZATION);
$oauth->setVersion('1.0');
$oauth->setTimestamp(mktime());
$oauth->enableDebug();
try
{
$req = $oauth->getRequestToken($requestUri, 'oob');
var_dump($req);
}
catch(OAuthException $e)
{
print '<pre>';
var_dump($e);
var_dump($oauth->debugInfo);
}
?>
Run Code Online (Sandbox Code Playgroud)
他们提供的规范(http://developer.lovefilm.com/-registration req)说我应该发一个类似下面的请求:
POST/oauth/request_token HTTP/1.1主机:openapi.lovefilm.com授权:OAuth oauth_callback ="http%3A%2F%2Fyour-service.com%2Fsuccess",oauth_consumer_key ="2blu7svnhwkzw29zg7cwkydn",oauth_nonce ="5f38dbc02a97567965f14d",oauth_signature = "sPSVmqN%2FXu9k0wlZxF0PqPZwYGo%3D",oauth_signature_method ="HMAC-SHA1",oauth_timestamp ="1278499295",oauth_version ="1.0"
但是,当我使用该方法时:
$oauth->setAuthType(OAUTH_AUTH_TYPE_AUTHORIZATION);
Run Code Online (Sandbox Code Playgroud)
生成的请求始终是GET.
有人可以帮忙吗?
谢谢,
本
我在一个silex应用程序中使用Twig.在预请求挂钩中,我想检查用户是否已登录,以及是否将用户对象添加到Twig(因此我可以在菜单中呈现登录/注销状态).
但是看过源代码后,它看起来只能提供模板视图变量作为render方法的参数.我在这里错过了什么吗?
这正是我想要实现的目标:
// Code run on every request
$app->before(function (Request $request) use ($app)
{
// Check if the user is logged in and if they are
// Add the user object to the view
$status = $app['userService']->isUserLoggedIn();
if($status)
{
$user = $app['userService']->getLoggedInUser();
//@todo - find a way to add this object to the view
// without rendering it straight away
}
});
Run Code Online (Sandbox Code Playgroud) 我在Silex应用程序中使用Symfony和Twig.
我有一个表格的注册页面:
{% extends "base.twig" %}
{% block title %}Welcome to My Example site{% endblock %}
{% block head %}
{{ parent() }}
{% endblock %}
{% block content %}
<div class="row">
<div class="span12">
<h2>Register</h2>
<p>
Register for this site and we'll give you free access to cool stuff
in addition you can subscribe to our premium content.
</p>
<form action="{{app.config.site.secureUrl}}/register-handler" method="post">
<fieldset >
{{ form_widget(form) }}
<button type="submit" class="btn btn-info">Send</button>
</fieldset>
</form>
</div>
</div>
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
尝试呈现页面时出现以下错误: …
我正在使用Magento的观察者钩子来挂钩订单保存过程.在订单设置完成并保存后,我想向Web服务发送消息.
但是我注意到Web服务经常收到重复的订单商品.
这是我的代码的简化版本,我知道它会出现问题:
<?php
class Name_Modulename_Model_Observer {
public function sales_order_save_commit_after($observer) {
// Gets the order which is being saved.
$order = $observer->getOrder();
$status = $order->getStatus();
if($status != "complete") {
continue;
}
// PROBLEM - The number of Mage_Sales_Model_Order_Item
// in this array sometimes does not correspond with the
// The number of items in the basket.
$items = $order->getAllItems();
$itemsInOrder = array();
foreach($items as $item) {
$product = $item->getProduct();
$itemsInOrder[] = $product->name;
}
// At the end of the loop …
Run Code Online (Sandbox Code Playgroud) 我试图覆盖Magento审查系统并使用我自己的.
我创建了一个模块并将其激活(可在站点的配置区域中查看).我已经创建了一个自定义布局,我现在正试图覆盖一些块.
我尝试了两种方法:
<review_product_list translate="label">
<block type="reviewwidget/widget" name="product.info.product_additional_data" as="product_additional_data" template="reviewwidget/widget.phtml"></block>
</review_product_list>
Run Code Online (Sandbox Code Playgroud)
和
<review_product_list translate="label">
<reference name="content">
<block type="reviewwidget/widget" name="product.info.product_additional_data" as="product_additional_data" template="reviewwidget/widget.phtml"></block>
</reference>
</review_product_list>
Run Code Online (Sandbox Code Playgroud)
我期望第一种方法覆盖块并使用我的自定义块和模板.它没有效果.
第二种方法在我试图替换的块之后在我的自定义模板中呈现有效.
谁能告诉我如何更换这个块?