У меня есть оболочка класса, класс car
, который живет в пространстве имен Automobile
. Тогда у меня есть класс tire
, который живет в пространстве имен Automobile\Wheels
. В классе шин я хочу получить доступ к статической переменной из класса автомобиля, но единственный способ сделать это - ссылаться на полное пространство имен \ класс.Пространства имен, которые добавляют текущее пространство имен
<?php
namespace Automobile;
class Car {
public static $Axle;
public function __construct() {
static::$Axle = new Axle();
}
}
<?php
namespace Automobile\Wheels;
class Tire {
public $size;
public function __construct($size = 16) {
$this->size = $size;
\Automobile\Car::$Axle->add_wheel($this);
}
}
Мои вопросы: действительно ли это хорошо практика ссылаться на классы, как это? Есть ли способ ссылки на класс без включения полного и абсолютного пространства имен для класса?
Вы можете добавить использование заявление в верхней части файла 'автомобилизации \ Car;', который будет препятствовать вам использовать 'автомобилей 'как класс в том же пространстве имен в этом файле. Остерегайтесь столкновений, которые вы можете избежать, используя псевдонимы 'use Automobile \ Car as CarAliasHere;'. Затем вы сможете использовать 'CarAliasHere' в этом файле. – JimL
Это работает. Я попробовал использовать Autmobile ;, но добавив имя класса в конец, это было то, что он сделал. Настройка псевдонима также помогает сгруппировать. Спасибо! – helllomatt