Articles of наследования

Черты – конфликт свойств с родительским классом

У меня есть класс Zgh\FEBundle\Entity\User который расширяет FOS\UserBundle\Model\User . use FOS\UserBundle\Model\User as BaseUser; class User extends BaseUser implements ParticipantInterface { use BasicInfo; // .. } И класс BaseUser : abstract class User implements UserInterface, GroupableInterface { protected $id; // .. } И свойство BaseInfo : trait BasicInfo { /** * @ORM\Column(type="string", length=255) * @ORM\Id * […]

PHP Унаследованный родительский метод не может получить доступ к частной собственности ребенка

Прежде всего: довольно похожая проблема была опубликована и как-то решена уже, но по-прежнему не отвечает на мою конкретную проблему. Подробнее об этом позже. В словах: у меня есть базовый класс, который предоставляет некоторые методы для всех дочерних элементов, но не содержит никакого свойства. Мой ребенок наследует эти методы, которые должны использоваться для доступа к свойствам […]

Многократное наследование PHP с интерфейсами

Я пытаюсь понять, как использование интерфейсов дает мне многократное наследование, поскольку я искал поисковые запросы. class A { function do1(){} function do2(){} function do3(){} } class B extends A { function do4(){} function do5(){} function do6(){} } class C extends B { } В приведенном выше примере класс C имеет все методы из классов A […]

функция twig-pass в шаблон

В настоящее время я помещаю свою функцию в класс и передаю экземпляр этого класса в шаблон и вызываю свою нужную функцию как метод класса. {{ unneededclass.blah() }} Мне нужно сделать, как показано ниже {{ blah() }} Является ли это возможным?

Получить пространство имен дочерних классов из суперкласса в PHP

Предполагая, что у меня есть следующие классы в разных файлах: <?php namespace MyNS; class superclass { public function getNamespace(){ return __NAMESPACE__; } } ?> <?php namespace MyNS\SubNS; class childclass extends superclass { } ?> Если я создаю экземпляр «childclass» и вызываю getNamespace (), он возвращает «MyNS». Есть ли способ получить текущее пространство имен из дочернего […]

Абстрактные частные функции

В следующем коде PHP будет недоволен тем, что customMethod () является закрытым. Почему это так? Является ли видимость определенной, где что-то объявлено, а не определено? Если бы я хотел, чтобы customMethod был только видимым для шаблона кода в классе Template и не позволял ему переопределяться, мог бы я просто сделать его защищенным и окончательным? template.php: […]

PHP: Как передать дочерние классы __construct () аргументам parent :: __ construct ()?

У меня есть класс на PHP: class ParentClass { function __construct($arg) { // Initialize a/some variable(s) based on $arg } } Он имеет дочерний класс, как таковой: class ChildClass extends ParentClass { function __construct($arg) { // Let the parent handle construction. parent::__construct($arg); } } Что, если по какой-то причине ParentClass нужно изменить, чтобы принять более […]

Как вызвать родительские методы PHP из унаследованного метода?

В PHP я пытаюсь ссылаться на метод, определенный в родительском классе объекта, на метод, унаследованный от родительского класса объекта. Вот код: class base_class { function do_something() { print "base_class::do_something()\n"; } function inherit_this() { parent::do_something(); } } class middle_class extends base_class { function do_something() { print "middle_class::do_something()\n"; } } class top_class extends middle_class { function do_something() […]

Как получить конструктор класса PHP для вызова его родительского конструктора

Мне нужно, чтобы конструктор класса в PHP вызывал конструктор родительского родителя (grandparent?) Без вызова родительского конструктора. // main class that everything inherits class Grandpa { public function __construct() { } } class Papa extends Grandpa { public function __construct() { // call Grandpa's constructor parent::__construct(); } } class Kiddo extends Papa { public function __construct() […]

Получение имени дочернего класса в родительском классе (статический контекст)

Я создаю библиотеку ORM с повторным использованием и простотой; все идет хорошо, за исключением того, что я застрял от глупого ограничения наследования. Пожалуйста, рассмотрите приведенный ниже код: class BaseModel { /* * Return an instance of a Model from the database. */ static public function get (/* varargs */) { // 1. Notice we want […]