$ this-> constant или $ this-> var в конструкторе классов - PullRequest
0 голосов
/ 23 октября 2019

Я хочу знать, является ли приведенный ниже код неправильным с точки зрения структуры, и если нет, то кто-нибудь может объяснить мне, почему он на самом деле работает

class ClassA extends ClassB
{
    public function __construct()
    {
        $this->FILE_DIRECTORY = 'book/auido';
    }

    public function index()
    {
        $file_directory = $this->FILE_DIRECTORY;
        return $file_directory
    }
}

Вышеприведенное возвращает

'book/auido'

Я понимаю, что правильный способ сделать это будет public static $variable = 'string'; и использовать self::$variable; для доступа к нему в любых методах в классе.

но у меня такое чувство, что использованный мною подход неверен, так как я не до конца понимаю, что происходит и почему это работает.

1 Ответ

0 голосов
/ 23 октября 2019

То, как вы использовали FILE_DIRECTORY, здесь не является константой, это просто переменная, записанная в верхнем регистре.

Это то, как вы будете использовать ее как константу, для справки:

class ClassA extends ClassB
{
    const FILE_DIRECTORY = 'book/auido';

    public function index()
    {
        $file_directory = self::FILE_DIRECTORY;
        return $file_directory
    }
}

Обычно люди используют константы для обозначения чего-то, что никогда не изменится, например, кода страны ISO. Все, что находится в вашем домене, может быть изменено, поэтому в этом случае конфигурация будет лучше.

...