PHP-将每个输入请求传递给变量是否会使它变慢并且消耗更多字节?

时间:2019-04-30 09:13:55

标签: php laravel

这两个中的哪个更好,更准确和最优化

选项A或选项B?

请告诉我哪里错了,我很困惑:(

谢谢!

选项A

class nameMyController extends Controller {

protected $locationId = 0;
protected $roomId = 0;
protected $participants = 0;
protected $startDate = null;
protected $endDate = null;
protected $request;

public function abc(Request $request) {
        $requestLocation = $request->input('office_site');
        $requestRoom = $request->input('rooms');
        $requestParticipants = $request->input('participants');
        $requestStartDate = $request->input('start_date');
        $requestEndDate = $request->input('end_date');

        $this->request = $request->all();

        if ($requestLocation != '') $this->locationId = $requestLocation;
        if ($requestRoom != '') $this->roomId = $requestRoom;
        if ($requestParticipants != '') $this->participants = $requestParticipants[0];
        if ($requestStartDate != '') $this->startDate = Carbon::parse($requestStartDate)->format(config('constants.DB_DATE_FORMAT'));
        if ($requestEndDate != '') $this->endDate = Carbon::parse($requestEndDate)->format(config('constants.DB_DATE_FORMAT'));

}

}

或者此选项B,

class nameMyController extends Controller {

protected $locationId = 0;
protected $roomId = 0;
protected $participants = 0;
protected $startDate = null;
protected $endDate = null;
protected $request;

public function abc(Request $request) {
        $this->request = $request->all();

        if ($request->input('office_site') != '') $this->locationId = $request->input('office_site');
        if ($request->input('rooms') != '') $this->roomId = $request->input('rooms');
        if ($request->input('participants') != '') $this->participants = $request->input('participants')[0];
        if ($request->input('start_date') != '') $this->startDate = Carbon::parse($request->input('start_date'))->format(config('constants.DB_DATE_FORMAT'));
        if ($request->input('end_date') != '') $this->endDate = Carbon::parse($request->input('end_date'))->format(config('constants.DB_DATE_FORMAT'));

}
}

我想知道哪个可以更快,更好,更优化和可重用。 而且,将值传递给对象属性比将参数传递给类/对象内部的函数还好吗?

3 个答案:

答案 0 :(得分:1)

由于PHP使用写时复制,您会注意到两者之间的任何区别(从性能角度而言),尤其是与内核启动的成本相比。保持冷静,并使用探查器来衡量您的表现。在企业开发中,您不会(也确实不应)考虑这些事情,直到您开始注意到操作的性能下降。

答案 1 :(得分:0)

为只使用一次的值创建变量是一种好习惯吗?

这在很大程度上取决于上下文。 可能是将来是否需要以某种方式在中间修改此值,或者这是否会增加代码的可读性。

从性能的角度来看,我认为在引擎盖下它会以相同的速度产生相同的结果,但这只是我的观点,未经任何测试证明。

答案 2 :(得分:0)

这取决于您重用这些变量的程度(例如$ requestLocation),就可重用性而言,选项A更好,再加上Storing a PHP integer takes 68 bytes of memory,这笔钱足够小,我想我会而不是担心处理时间而不是内存空间。