当脚本在Apache下运行时,我将$_SERVER['SERVER_NAME']值插入到报告电子邮件的错误中.
但是,如果一个Web脚本叉一个"工人"的工作有nohup php ...,$_SERVER['SERVER_NAME']显示为空在那里.因此,如果发生错误,则报告没有主机名.
我可以通过PHP可靠地获取主机名,而无需调用Unix hostname命令吗?
根据此邮件列表讨论,访问Zend MVC控制器中的应用程序资源的推荐方法是:
$this->getInvokeArg('bootstrap')->getResource('foo');
Run Code Online (Sandbox Code Playgroud)
这适用于生产(浏览到相应的网页时).但是,在测试包含此代码的控制器操作时Zend_Test_PHPUnit_ControllerTestCase,我得到:
PHP致命错误:在第12行的.../application/controllers/IndexController.php中的非对象上调用成员函数getResource()
在介绍那个getInvokeArg东西之前,测试运行得很好.问题是,如何在测试工具中使用"推荐"方式访问资源?
刚检查:$this->getFrontController()->getParam('bootstrap')->getResource('foo')也不起作用.
更新:我确实调用了应用程序引导程序,phpunit --bootstrap ./scripts/application_bootstrap.php ...我知道它执行正常.
我有:
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
Run Code Online (Sandbox Code Playgroud) 我在PHP项目上的合作伙伴反对我总是在动态SQL中清理整数值的做法.我们尽可能使用参数化查询.但是对于UPDATE和DELETE条件,Zend_Db_Adapter需要一个非参数化的SQL字符串.这就是为什么我,即使没有想到,总是写下这样的东西:
$db->delete('table_foo', 'id = ' . intval($obj->get_id()));
Run Code Online (Sandbox Code Playgroud)
这是等效的,但是(我已检查过ZF源代码)的更短版本:
$db->delete('table_foo', $db->qouteInto('id = ?', $obj->get_id(), 'INTEGER'));
Run Code Online (Sandbox Code Playgroud)
我的伙伴强烈反对这一点intval(),说如果$objID为null(该对象尚未保存到DB),我将不会注意到错误,并且DB操作将以静默方式执行.这就是他实际发生的事情.
他说,如果我们清理所有HTML表单输入,那么整数ID就不可能进入'; DROP TABLE ...',或' OR 1 = 1'或者另一个讨厌的值,并插入到我们的SQL查询中.因此,我只是偏执,使我们的生活变得更加复杂."不要再相信$_SESSION价值了"他说.
但是,对于字符串值条件,他同意:
$db->update->(
'table_foo',
$columns,
'string_column_bar = ' . $db->qoute($string_value))
);
Run Code Online (Sandbox Code Playgroud)
我没有证明他错了,他没有证明我错了.你能做到吗?
有谁知道在PHP的下一个版本中是否可以使用以下表达式?
(new A())->a(); // Causes a syntax error
Run Code Online (Sandbox Code Playgroud)
我觉得非常讨厌,目前必须写2行而不是1行:
$c = new A();
$c->a();
Run Code Online (Sandbox Code Playgroud) 这个问题与PHPUnit有关,虽然它应该是一个全局的xUnit设计问题.
我正在为一堂课写一个单元测试用例Image.
这个类的方法之一是setBackgroundColor().
我需要为此方法测试4种不同的行为,
array(255,255,255)array('red' => 255, 'green' => 255, 'blue' => 255)(这是GD功能的输出格式imagecolorsforindex())IMG_COLOR_TRANSPARENT目前,我已将所有这些包含在我的测试用例中的一个测试中testSetBackgroundColor(),但是我感觉这应该是4个单独的测试,因为测试变得很长并且做了很多.
我的问题是,我该怎么办?我是否将所有这些封装到Image测试用例的1个测试中,或者将上面的内容拆分为单独的测试,例如,
testSetBackgroundColorErrorstestSetBackgroundColorShorthandRGBtestSetBackgroundColorRGBtestSetBackgroundColorTransparent我在这里提出了有问题的测试http://pastebin.com/f561fc1ab.
谢谢
您如何为客人关系建模预订酒店房间(如果重要的话,在PostgreSQL中)?一个房间可以有几个客人,但至少有一个.
当然,人们可以通过外键将客人与预订联系起来booking_id.但是,如何在DBMS级别强制执行一个房间必须至少有一个访客?
可能是不可能的?
我在Mac OS X 10.6.4上使用Homebrew包管理系统安装了Clojure 1.2.0.运行:
$ clj -e '(println "??????? ????\n")'
Run Code Online (Sandbox Code Playgroud)
在终端中导致:
??????? ????
Run Code Online (Sandbox Code Playgroud)
在同一终端运行时:
$ php -r 'echo "??????? ????\n";'
Run Code Online (Sandbox Code Playgroud)
正确显示西里尔文本.
运行时效果相同 $ clj <some .clj file in UTF-8 encoding>
这是一个已知问题吗?Java Runtime相关?我认为在这一点上语言最终得到了正确的Unicode.
假设我有一个用couchDB保存的文档,文档看起来像这样:
{
"email": "lorem@gmail.com",
"name": "lorem",
"id": "lorem",
"password": "sha1$bc5c595c$1$d0e9fa434048a5ae1dfd23ea470ef2bb83628ed6"
}
Run Code Online (Sandbox Code Playgroud)
我希望能够通过'id'或'email'查询文档.因此,当我将其保存为视图时,我会这样写:
db.save('_design/users', {
byId: {
map: function(doc) {
if (doc.id && doc.email) {
emit(doc.id, doc);
emit(doc.email, doc);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后我可以这样查询:
db.view('users/byId', {
key: key
}, function(err, data) {
if (err || data.length === 0) return def.reject(new Error('not found'));
data = data[0] || {};
data = data.value || {};
self.attrs = _.clone(data);
delete self.attrs._rev;
delete self.attrs._id;
def.resolve(data);
});
Run Code Online (Sandbox Code Playgroud)
它工作得很好.我可以通过id或加载数据email.但我不确定我是否应该这样做.
我有另一个解决方案,通过保存相同的文档与两个不同的视图,如,byId和byEmail,但这样我保存相同的文档两次,显然它将花费数据库的空间. …
我正在计算一个倒数/倒计时器.设置原始日期后,计时器将显示自 - 以来经过的时间,或者保持到原始日期为止.
type OriginDefined
= Up Date
| Down Date
type Origin
= OriginDefined
| OriginUndefined
type Model
= Tick OriginDefined
| Edit Origin
Run Code Online (Sandbox Code Playgroud)
因此,只有在定义了原始日期时,计时器才会打勾.编辑原点时,可能先前已定义或未定义.
现在我需要一个函数来返回defaultValue日期输入,当我们处于Edit模式时.
dateInputDefaultValue : Origin -> String
dateInputDefaultValue origin =
case origin of
OriginUndefined ->
""
OriginDefined ->
...
Run Code Online (Sandbox Code Playgroud)
在这里,我努力将origin进一步构造为一个Up date或多个Down date.在case表达式的第二个分支中,编译器拒绝将其origin视为更具体而不仅仅是一个Origin.
这是一个Ellie https://ellie-app.com/3zKCcX87wa1/0
我应该如何处理这样的模型?我应该以不同的方式建模吗?
我试过了:
$form->addElement(
'select',
'salutation',
array(
'required' => true,
'options' => array(
'Mr.' => 'Mr.',
'Mrs.' => 'Mrs.',
'Ms.' => 'Ms.',
),
)
);
Run Code Online (Sandbox Code Playgroud)
然后我print_r()编辑了表格,称呼的选项是空的.有人知道正确的咒语吗?据我所知,没有Zend元素配置格式的文档.