小编Pav*_* S.的帖子

PHP - self,static或$ this in callback function

是否可以访问被引用的类/对象self,static以及$thisPHP中的匿名回调?像这样:

class Foo {
    const BAZ = 5;
    public static function bar() {
         echo self::BAZ; // it works OK
         array_filter(array(1,3,5), function($number) /* use(self) */ {
             return $number !== self::BAZ; // I cannot access self from here
         });
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让它像通常的变量一样使用use(self)子句?

php static callback self anonymous-function

15
推荐指数
1
解决办法
8915
查看次数

仅在主表不存在时才将主键添加到PostgreSQL表

我在Postgres 9.1中有简单的表创建脚本.我需要它来创建具有2个属性PK的表,只有它不存在.

CREATE TABLE IF NOT EXISTS "mail_app_recipients"
(
    "id_draft" Integer NOT NULL,
    "id_person" Integer NOT NULL
) WITH (OIDS=FALSE); -- this is OK

ALTER TABLE "mail_app_recipients" ADD PRIMARY KEY IF NOT EXISTS ("id_draft","id_person");
-- this is problem since "IF NOT EXISTS" is not allowed.
Run Code Online (Sandbox Code Playgroud)

任何解决方案如何解决这个问题?提前致谢.

sql postgresql alter-table primary-key postgresql-9.1

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

PHP - 将数组作为可变长度参数列表传递

我的PHP脚本中有一个非常简单的问题.定义了一个带有可变长度参数列表的函数:

function foo() {
  // func_get_args() and similar stuff here
}
Run Code Online (Sandbox Code Playgroud)

当我这样称它时,它的工作正常:

foo("hello", "world");
Run Code Online (Sandbox Code Playgroud)

但是,我在数组中有我的变量,我需要将它们"单独"传递给函数的单个参数.例如:

$my_args = array("hello", "world");
foo(do_some_stuff($my_args));
Run Code Online (Sandbox Code Playgroud)

是否有任何do_some_stuff函数为我分割参数,所以我可以将它们传递给函数?

php arrays function variadic-functions

12
推荐指数
2
解决办法
9516
查看次数

Statsd&Graphite - 以CSV格式获取数据

我使用statsd测量统计数据,使用Graphite显示这些数据.无论如何,我想在统计软件中做一个更复杂的分析,找出各种变量之间的关系.

为了做到这一点,我需要"原始"数据,这些数据通常在Graphite中显示为彩色线条.是否可以以CSV格式获取数据?我认为,每10秒采样1次的数据将是完美的,这是统计的默认行为.

export-to-csv graphite statsd

12
推荐指数
1
解决办法
8852
查看次数

如何解决PHP中缺少的对象属性?

这有点哲学,但我想很多人都遇到过这个问题.目标是在PHP中访问各种(动态声明的)属性,并在未设置时删除通知.

为什么不__get呢?
那是,如果你可以声明自己的类很好的选择,但不是在的情况下stdClass,SimpleXML或类似的.扩展它们不是选项,因为您通常不直接实例化这些类,它们是作为JSON/XML解析的结果返回的.

例:

$data = '{"name": "Pavel", "job": "programmer"}';
$object = json_decode($data);
Run Code Online (Sandbox Code Playgroud)

我们有简单的stdClass对象.问题很明显:

$b = $data->birthday;
Run Code Online (Sandbox Code Playgroud)

该属性未定义,因此会发出通知:

PHP Notice:  Undefined property: stdClass::$birthday
Run Code Online (Sandbox Code Playgroud)

如果您认为通过解析某些JSON获得该对象,则可能经常发生这种情况.天真的解决方案是显而易见的:

$b = isset($data->birthday) ? $data->birthday : null;
Run Code Online (Sandbox Code Playgroud)

然而,当将每个存取器包装到其中时,很快就会感到疲倦.特别是当链接对象时,例如$data->people[0]->birthday->year.检查是否people已设置.检查是否设置了第一个元素.检查是否birthday已设置.检查是否year已设置.我觉得有点过分了......

问: 最后,我的问题在这里.
解决这个问题的最佳方法是什么?沉默通知似乎不是最好的主意.检查每个房产都很困难.我已经看到一些解决方案,如Symfony属性访问,但我认为它仍然是太多样板.有没有更简单的方法?无论是第三方库,PHP设置,C扩展,我都不在乎它的工作原理......还有什么可能的陷阱?

php properties boilerplate isset

11
推荐指数
1
解决办法
4909
查看次数

PHP好友/包可见性

有没有办法限制PHP中的可见性,就像"包"可见性在Java中工作或至少在C++中的"朋友"可见性一样?维护大型OOP项目并且不让任何人使用任何代码部分的最佳实践是什么?

我尽可能多地使用私人和受保护的可见性,但有时这还不够.我知道这个请求:https://bugs.php.net/bug.php?id = 55331.在PHP中实现这样的事情有什么进展吗?是否有任何解决方法来保护您的代码(方法,类变量)不被任何地方访问?

php visibility friend package

10
推荐指数
2
解决办法
3202
查看次数

在PHPUnit Selenium 2测试用例中选择所有匹配的元素

在PHPUnit Selenium 2测试用例中,通过指定其类来选择元素很简单:

$element = $this->byClassName("my_class");
Run Code Online (Sandbox Code Playgroud)

但是,即使有两项my_class,选择器也只选择其中一项(可能是第一项).我该如何选择所有这些?我很感激allByClassName:

$elements = $this->allByClassName("my_class");
foreach($elements as $element) {
    doSomethingWith($element);
}
Run Code Online (Sandbox Code Playgroud)

allByClassNamePHPUnit Selenium 2扩展中有什么类似的东西吗?

php selenium phpunit unit-testing selenium-webdriver

10
推荐指数
1
解决办法
8728
查看次数

Jest onFailure 钩子

我有一个使用 Jest 运行的测试套件。我想在任何失败的测试之后触发一个钩子,理想情况下测试的上下文仍然可用。

具体来说,我通过jest-puppeteer使用 Puppeteer 。目标是在测试失败后,在tearDown函数中关闭页面之前截取页面的屏幕截图。

实现这一目标的最佳方法是什么?

我的测试套件的一个例子:

describe('My tests', () => {
    beforeAll(async () => {
        await page.goto('http://example.com');
    });

    // TODO I need something like this
    onFailure(async (something) => {
        page.takeScrenshot();
    });

    test('My example test', async () => {
        return await page.waitFor('.example-selector');
    });
});
Run Code Online (Sandbox Code Playgroud)

我发现在设置测试运行器时有onTestFailure 选项,是否可以利用它?

javascript jestjs puppeteer

10
推荐指数
1
解决办法
768
查看次数

根据PHP中的语言环境获取日期格式

有一个非常简单的问题.我有一个语言环境标识符,en,en_US,cs_CZ或其他.我只需要获取该语言环境的日期时间格式.我知道我可以根据语言环境轻松格式化任何时间戳或日期对象.但我只需要日期格式字符串表示,让我们说一个正则表达式.是否有任何功能管理此功能?到目前为止我还没有发现任何...

Exapmle:

$locale = "en_US";
$format = the_function_i_need($locale);
echo $format; // prints something like "month/day/year, hour:minute"
Run Code Online (Sandbox Code Playgroud)

php format datetime date

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

使用strophe.js的授权请求(添加到名册)

我使用strophe.js库在浏览器中发送和接收XMPP消息.它工作正常,但仅限于我已经在我的联系人列表中的用户 - 名单.

我需要在我的名册中添加一个人(我知道他的地址).我如何使用strophe.js实现这一目标?这对我很重要,因为gmail拒绝向我名单中没有的人发送消息.我想获得订阅:两者都能够接收和发送消息.

xmpp google-talk contacts strophe

9
推荐指数
1
解决办法
4918
查看次数