В этой статье приведен пример PHP, использующего признак для решения проблемы одиночного наследования PHP. Подробности заключаются в следующем:
Что такое наследование?
Наследование на самом деле является своего рода отношением между двумя классами в объектно-ориентированном программировании. Это важное средство объектно-ориентированного программирования. Благодаря наследованию структура программы может быть более эффективно организована, отношения между классами могут быть уточнены, а существующие классы могут быть полностью использованы для завершения более сложной и углубленной разработки.
Когда класс содержит все данные и операции другого класса, говорят, что между этими двумя классами существует связь наследования.
Все унаследованные операции родительского класса и подкласса называются унаследованными операциями.
В PHP расширение используется для обозначения отношения наследования между подклассом и родительским классом.
В объектно-ориентированном программировании использование наследования для организации классов в системе проектирования может улучшить абстракцию программы, приблизиться к образу мышления, сделать структуру программы более понятной и снизить нагрузку на кодирование и обслуживание.
- Единое наследование означает, что любой класс имеет только один родительский класс, и его структура может быть представлена простой древовидной структурой;
- Множественное наследование означает, что класс может иметь более одного родительского класса, а его свойства статических данных и операции наследуются от всех этих родительских классов. Его структура должна быть представлена сложной сетевой структурой.
PHP поддерживает только одно наследование, в то время как множественное наследование реализуется через интерфейс или признак.
Пример одного наследования PHP:
//Singleton inheritance: a subclass can only have one parent
class A{
function show() {
echo "A";
}
}
class B{
function show() {
echo "B";
}
}
class C extends A{
}
$c = new C;
$c->show();Использование признака для решения одноэлементного наследования PHP
Начиная с PHP 5.4.0, PHP реализовал метод повторного использования кода, называемый trait.
- Trail-это механизм повторного использования кода для отдельных языков наследования, таких как PHP
- Чтобы уменьшить ограничения одного языка наследования, он позволяет разработчикам свободно использовать методы в независимых классах в разных иерархиях
- Семантика сочетания признака и класса определяет способ уменьшить сложность и избежать типичных проблем традиционного множественного наследования и смешанного класса
- Не может быть создан через саму черту
Пример:
Несколько трасс
Разделенные запятыми, в объявлении об использовании перечислены несколько маршрутов, которые могут быть вставлены в класс.
sayHello(); $o->sayWorld(); $o->sayExclamationMark();
Разрешение конфликтов
Если оба пути вставляют метод с одинаковым именем, произойдет фатальная ошибка, если конфликт не будет разрешен явно.
Чтобы разрешить конфликт именования нескольких признаков в одном классе, нам нужно использовать их вместо оператора , чтобы явно указать, какой из конфликтующих методов использовать.
Допускается исключение только других методов, поскольку оператор может ввести псевдоним для метода. будьте осторожны, как Оператор не переименовывает метод и не влияет на его метод.
Пример:
От черты к черте
Точно так же, как класс может использовать признак, другие признаки также могут использовать признак. При определении признака некоторые или все элементы других признаков могут быть объединены с помощью одного или нескольких признаков.
sayHello(); $o->sayWorld();
Абстрактные члены признака
Чтобы обеспечить принудительное использование классов, trait поддерживает использование абстрактных методов.
getWorld();
}
abstract public function getWorld();
}
class MyHelloWorld {
private $world;
use Hello;
public function getWorld() {
return $this->world;
}
public function setWorld($val) {
$this->world = $val;
}
}Статические члены тропы
Черты могут быть определены статическими элементами и статическими методами.
PHP // static members
trait Counter {
public function inc() {
static $c = 0;
$c = $c + 1;
echo "$c\n";
}
}
class C1 {
use Counter;
}
class C2 {
use Counter;
}
$o = new C1(); $o->inc(); // echo 1
$p = new C2(); $p->inc(); // echo 1x;
справочные ресурсы:
справочные ресурсы:
справочные ресурсы:
https://www..com/what-is-traits-in-php
Подробнее о содержании, связанном с PHP, заинтересованные читатели могут ознакомиться со специальными разделами этого веб-сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Энциклопедия навыков работы с массивами PHP”, “Вводный учебник по базовой грамматике PHP”, “Краткое описание операций PHP и использования операторов”, “Краткое описание использования строк PHP”, “Вводный учебник по работе с базой данных PHP + MySQL” и “Общая работа с базой данных PHP”. Краткое изложение навыков письма
Я надеюсь, что эта статья будет полезна для программирования на PHP.