@EvgMul

Как создать экземпляр класса внутри другого класса?

Здравствуйте. Ситуация следующая.
Есть 3 файла, в каждом из которых реализованы классы.
Есть 4-й файл, который все эти классы объединяет посредством include.

В одном из классов мне требуется описать свойство, которое будет типа другого класса.
Выглядит это примерно так:
class Two {
    public $one = new One();

   #code.....
}

Но php ругается, вываливая следующую ошибку: Parse error: syntax error, unexpected T_NEW in ...
Чтобы это реализовать, требуется обязательно наследовать классы? Возможно я объявляю не так? Подскажите пожалуйста, где я допустил, вероятно, очень глупую ошибку.
Заранее благодарен всем отозвавшимся.
  • Вопрос задан
  • 1425 просмотров
Решения вопроса 2
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Есть 4-й файл, который все эти классы объединяет посредством include.

Почитайте, пожалуйста, PSR-4. У нас, вроде, 2016 год на дворе. Неймспейсы со времён PHP 5.3 доступны.
Чтобы это реализовать, требуется обязательно наследовать классы?

Это зависит от того, чего вы хотите добиться. В одном случае лучше будет сделать наследование, в другом - положить другой объект в свойство. Полагаю, если у вас должен быть объект, который использует 4 других независимых друг от друга и не имеющих общего кода объекта как зависимости, второй вариант действительно лучше в этом случае.
Но php ругается, вываливая следующую ошибку: Parse error: syntax error, unexpected T_NEW in ...

Просто нельзя создать новый объект в этой секции (объявление свойств). Положите новый объект в свойство в конструкторе.
class Two {
    /**
    * @var One
    */
    public $one;

    public function __construct()
    {
        $this->one = new One();
    }

   #code.....
}

P.S. Вы бы хоть ошибки читали, которые вам PHP выкидывает.
Ответ написан
riot26
@riot26
<:З )~~
class Two
{
    public $one;

    public function __cunstruct()
    {
        $this->one = new One();
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ddv88
@ddv88
Binance Futures
Как на счет trait?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы