我在WordPress中做了很多工作,我注意到有更多的函数返回对象而不是数组.除非您特别要求数组,否则数据库结果将作为对象返回.错误作为对象返回.在WordPress之外,大多数API都会为您提供一个对象而不是一个数组.
我的问题是,为什么他们使用对象而不是数组?在大多数情况下,它并不重要,但在某些情况下,我发现物体不仅难以加工而且能够缠绕我的头部.是否有使用对象的性能原因?
我是一名自学成才的PHP程序员.我有文科学位.如果我错过了计算机科学的一个基本方面,请原谅我.;)
使用DateTime该类,如果我尝试运行以下代码:
$mydate = new DateTime();
echo $mydate->date;
Run Code Online (Sandbox Code Playgroud)
我会收到此错误消息
注意:未定义的属性:DateTime :: $ date ...
这没有意义,因为在运行var_dump()变量时$mydate,它清楚地表明此属性存在且可公开访问:
var_dump($mydate);
object(DateTime)[1]
public 'date' => string '2012-12-29 17:19:25' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
Run Code Online (Sandbox Code Playgroud)
这是PHP中的错误还是我做错了什么?我正在使用PHP 5.4.3.
为什么我dump()在使用它之前只能到达我的日期对象?
这是我的功能:
public function checkSubscriptionEndDate($user){
$subscriptionEndDate = $user->getSubscriptionEndDate();
dump($subscriptionEndDate);
if($subscriptionEndDate==null){
$subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionEndDateMessage');
$subscriptionStatus = "error";
}else{
$subscriptionEndDateDate = $subscriptionEndDate->date;
// CHECK IF SUBSCRIPTION END DATE IS BEFORE NOW
if (date('now') < $subscriptionEndDateDate) {
dump('before');
$subscriptionStatus = "success";
$subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionStatusSuccess').' '.date('d/m/Y',strtotime($subscriptionEndDateDate));
}else{
dump('after');
$subscriptionStatus = "error";
$subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionStatusError').' '.date('d/m/Y',strtotime($subscriptionEndDateDate));
}
}
return array(
'subscriptionEndDateMessage' => $subscriptionEndDateMessage,
'subscriptionStatus' => $subscriptionStatus
);
return $subscriptionEndDateMessage;
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,页面按预期加载,没有问题.但如果我删除这一行:
dump($subscriptionEndDate);
我无法再加载$subscriptionEndDate->date此错误页面中所示: