小编MKr*_*ers的帖子

在浏览器中显示致命/通知错误

好吧,我刚开始使用hhvm/hack.但是我想向浏览器显示错误,但没有让它工作.

我按照以下方式设置了ini设置

error_reporting(E_ALL);
ini_set('display_errors', '1');
Run Code Online (Sandbox Code Playgroud)

根据var_dump ini_get的值设置为

string(5) "32767"
string(1) "1"
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

<?hh

error_reporting(E_ALL);
ini_set('display_errors', '1');

throw new InvalidArgumentException('test');
Run Code Online (Sandbox Code Playgroud)

当我通过浏览器访问页面时,我会得到一个白色屏幕和一个500 http头.所以没有解释致命/异常错误.

然而,我会通过终端hhvm index.php它会显示;

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'test' in /var/www/public/index.php:3
Stack trace:
#0 {main}
Run Code Online (Sandbox Code Playgroud)

所以现在问题.怎么来我在浏览器中没有收到任何消息,但在cli中做什么?第二个是,我如何让它在浏览器中工作以显示消息.

我遇到了这个问题这个问题.但第一个,好的是相同的,但是没有答案.第二个是关于静态检查的说法.IE给出了一个int等,至少这是我认为他的意思.

我来的其他问题,看起来像我的,但又没有答案.

根据文档,它应该工作,我猜.

阅读更多关于我遇到的文档

尽管display_errors可以在运行时设置(使用函数ini_set()),但如果脚本存在致命错误,则不会产生任何影响.这是因为未执行所需的运行时操作.

所以我认为异常是一个致命的错误,所以我就这么做了 $test = $bar + 1;

这让cli来了

Notice: Undefined variable: bar in /var/www/public/index.php on line 8
int(1)
Run Code Online (Sandbox Code Playgroud)

再次在浏览器中

int(1) 
Run Code Online (Sandbox Code Playgroud)

所以我也没有收到通知.

当我重新启动hhvm时,service hhvm restart我也收到错误消息 …

hhvm

8
推荐指数
1
解决办法
3722
查看次数

带有左连接的 MySQL json_arrayagg 没有结果

在 MySQL 8.0中引入了json_arrayagg,这使得聚合 json 结果成为可能。

现在我想用它来显示附加到消息的标签。

目前有这三个表(简化)

CREATE TABLE IF NOT EXISTS feed_message (
  id CHAR(36) PRIMARY KEY
);

CREATE TABLE IF NOT EXISTS feed_tag (
  id CHAR(36) PRIMARY KEY,
  name VARCHAR(30) NOT NULL
);

CREATE TABLE IF NOT EXISTS feed_message_tag (
  message CHAR(36) NOT NULL,
  tag CHAR(36) NOT NULL,

  PRIMARY KEY (message, tag)
);
Run Code Online (Sandbox Code Playgroud)

所以有一个包含消息的表,一个包含所有标签和一个包含标签和消息之间连接的表 (feed_message_tag)。

我正在寻求的响应是一个带有一列标签的消息列表,它是一个带有 id + name 的对象数组。所以事情如下

[{"id": 1, "name": "Foo"}]
Run Code Online (Sandbox Code Playgroud)

现在我发现的例子使用(内部)连接,这意味着消息必须有一个标签,但情况并非总是如此,所以使用了左连接。这让我想到了我使用的以下查询

SELECT
  json_arrayagg(
      json_object(
          'id',
          ft.id,
          'name',
          ft.name
      )
  ) as 'tags' …
Run Code Online (Sandbox Code Playgroud)

mysql

8
推荐指数
1
解决办法
2941
查看次数

Emmet 编码 lorem ipsum,不以 lorem 开头

好吧,我刚开始使用 emmet 脚本/编码。所以我发现你可以很容易地生成lorem ipsum

div>lorem20
Run Code Online (Sandbox Code Playgroud)

我唯一遇到的问题是我使用了很多 lorem ipsum,页面上的所有内容都以lorem ipsum. 我试着看看是否有办法说我想要 lorem ipsum 但不是从 lorem ipsum 开始,我找不到这个问题的任何答案。

所以问题是,我可以用 emmet 轻松生成 lorem ipsum 但不要让它以 lorem ipsum 开头。(我知道我可以删除它,但这会浪费语法

lorem-ipsum emmet

7
推荐指数
1
解决办法
8323
查看次数

Zend Framework 2会话的生命周期

我正在尝试设置会话的最长生命时间\Zend\Session\Container.为了测试它,我把它放到1秒.

现在我查看了文档

所以我做了

$config = new StandardConfig();
$config->setOptions(array(
    'remember_me_seconds' => 1,
));
$manager = new SessionManager($config);
$session = new Container('user', $manager);
Run Code Online (Sandbox Code Playgroud)

但没有成功.然后我开始谷歌搜索,找到了这个答案

所以我做了配置

return array(
    'session' => array(
        'remember_me_seconds' => 2419200,
        'use_cookies' => true,
        'cookie_httponly' => true,
    ),
);
Run Code Online (Sandbox Code Playgroud)

(配置工作并加载到管理器中)但再次没有成功

所以我继续搜索并找到了答案

但再没有成功.

因此,经过所有的搜索,我无法让它工作,所以现在我希望其他人得到它的工作,并可以帮助我.

php session zend-framework2

5
推荐指数
1
解决办法
9276
查看次数

域驱动设计,实体延迟加载

我对领域驱动设计(DDD)相当陌生,但我所理解的是你对应用程序服务说话,这是你的"模型"的入口.该服务可以与使用源(文件,数据库等)来获取数据的存储库进行通信.存储库返回一个实体.

这就是我所得到的全球理念.服务知道存储库但不知道实体等.

现在我有以下问题.

我有一个实体用户,它类似于以下内容(仅作为示例)

<?php    
class User
{
    protected $name;
    protected $city_id;

    public function getCity()
    {
         // return $city_entity;
    }
}
Run Code Online (Sandbox Code Playgroud)

getCity()函数返回城市实体.我希望此函数使用延迟加载,因此在使用用户存储库时注入CityEntity并不是非常懒惰的加载.

我带来了两个问题的解决方案.但我觉得两者都是针对DDD的负责人.

我提出的第一个解决方案是在用户实体中注入城市存储库,这有缺点:如果您需要更多存储库,则必须在实体中加载它们.它看起来像答案,但它看起来像我的存储库的包装.那么为什么不注入存储库呢?

第二种解决方案,您为实体提供服务定位器.这样做的缺点是除非您阅读代码,否则您不再需要哪些存储库.

所以现在问题是,在保持DDD原理完整的同时,提供延迟加载的灵活性的最佳方法是什么?

php domain-driven-design

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

浮点到int错误

昨天我帮助了一个人并得到了一个奇怪的错误,我无法向他解释它是如何工作的.

代码(在3台机器上测试(PHP 5.3和PHP 5.4))

// (float)65.35
$percentage = round(65.351, 2);
// (float) 6535
$total = $percentage * 100;
// (int) 6534
$int = (int) $total;
Run Code Online (Sandbox Code Playgroud)

怀疑是int值是什么,6535但结果却是6534.

有人可以解释发生了什么吗?

php int casting

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

根据PHP变量设置表单下拉列表

我有一个带有四个选项的下拉表单项.

<p>Priority: 
  <select required name=\"priority\">
    <option default value=\"1\">1 - 10 days</option>
    <option value=\"2\">2 - 5 days</option>
    <option value=\"3\">3 - 48 hours</option>
    <option value=\"4\">4 - 24 hours</option>
  </select>
</p>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/2nmxN/

这些值已经使用1,2,3,4存储在SQL数据库中.我正在处理的页面是各种编辑页面,因此我希望在下拉列表中选择数据库中设置的任何值,这样用户就不必在提交时重新选择该值.我怎样才能找到它并根据设置选择正确的选项?使用像这样的文本字段,我没有问题:

echo "<p>Cost: <input required type=\"text\" name=\"cost\" value=\"".$cost."\">";
Run Code Online (Sandbox Code Playgroud)

我是否必须为每个值(if ($priority == 1) {...})等做四种不同的if语句?

html php mysql forms

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