PHP严格标准:从空值创建默认对象

时间:2013-01-08 16:20:45

标签: php standards strict

我的cronjobs报告中有这个错误

PHP严格标准:在第28行的/home/admin/domains/DOMAIN.com/public_html/birthdate.php中从空值创建默认对象 严格标准:在第28行的/home/admin/domains/DOMAIN.com/public_html/birthdate.php中从空值创建默认对象

和我的代码:

28-   $D->user_birthdate = array();
29-   $latest_members_arr = $network->get_user_birthdate();
30-   foreach($latest_members_arr as $usr)
40-   {
41-     $D->user_birthdate[]    = $network->get_user_by_id($usr);
42-   }
43-    $num    = 30;
44-   $D->user_birthdate    = array_slice($D->user_birthdate, 0, $num);

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

在代码的顶部添加以下行。

$D =  new stdClass();
$D->user_birthdate = array();

您收到错误,因为$D不存在。您应该创建一个新的StdClass对象。 stdClass是php的通用空类。 Read more

假设您的$ D对象具有特定类型(对象类型),请确保使用它。 EG:

$D =  new dClass();

此处$D是类dClass()

的对象

答案 1 :(得分:2)

可能$ D为空? 改为使用数组:

$birth_dates = array();
$latest_members_arr = $network->get_user_birthdate();
foreach($latest_members_arr as $usr)
{
   birth_dates[]    = $network->get_user_by_id($usr);
}

或者,如果$ D为null,请考虑使用标准类,将其添加到代码顶部:

if (empty($D)) {
$D = new stdClass();
}

答案 2 :(得分:1)

$D未定义。必须先使用new关键字(或从先前实例化的对象复制)将其设置为某个值,然后才能分配值。