父母类:
<?php
namespace AppServices;
class RequestVariables {
protected static $keys_tour;
public static function init() {
self::$keys_tour = array_flip(['tour_type', 'city_from']);
}
}
儿童课:
<?php
namespace AppServices;
class PreviousVersions extends RequestVariables {
public static function createVersion ($tour) {
dd(parent::$keys_tour);
}
}
当我从第一控制器调用PreviousVersions::createVersion()
时:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppServicesPreviousVersions;
use AppTour;
class Tours2Controller extends Controller
{
public static function PreProcess($tour)
{
PreviousVersions::createVersion($tour);
}
}
它输出预期的内容:
array:2 [
"tour_type" => 0
"city_from" => 1 ]
但是,当我在另一个控制器中执行相同的函数时:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppTour;
use AppServicesPreviousVersions;
class BookingController extends Controller {
public function booking($tour)
{
PreviousVersions::createVersion($tour);
}
}
它输出'null'
我看不到我的控制器之间有什么不同,从而在调用同一方法时会导致不同的结果。有人可以告诉我为什么在第二个情况下输出" null"?
如果您需要更多信息,请询问
$keys_tour
属性是在RequestVariables
类的init()
方法中设置的。
您可以通过在createVersions()
方法中调用RequestVariables::init()
来解决它:
public static function createVersion ($tour)
{
RequestVariables::init();
}
或使用parent
关键字:
public static function createVersion ($tour)
{
parent::init();
}