PHP – What are Traits? #
PHP – Шинж чанарууд гэж юу вэ? #
PHP only supports single inheritance: a child class can inherit only from one single parent.
PHP нь зөвхөн ганц өв залгамжлалыг дэмждэг: хүүхдийн анги зөвхөн ганц эцэг эхээс өвлөх боломжтой.
So, what if a class needs to inherit multiple behaviors? OOP traits solve this problem.
Тэгэхээр, анги нь олон зан үйлийг өвлөх шаардлагатай бол яах вэ? OOP шинж чанарууд нь энэ асуудлыг шийддэг.
Traits are used to declare methods that can be used in multiple classes. Traits can have methods and abstract methods that can be used in multiple classes, and the methods can have any access modifier (public, private, or protected).
Шинж чанаруудыг олон ангид ашиглаж болох аргуудыг тунхаглахад ашигладаг. Шинж чанарууд нь олон ангид ашиглаж болох аргууд ба хийсвэр аргуудтай байж болох ба эдгээр аргууд нь хандалтын ямар ч өөрчлөлтийг (нийтийн, хувийн, хамгаалалттай) агуулж болно.
Traits are declared with the trait
keyword:
Шинж чанаруудыг trait
түлхүүр үгээр зарлана:
Syntax #
<?php
trait TraitName {
// some code...
}
?>
To use a trait in a class, use the use
keyword:
Ангидаа шинж чанарыг ашиглахын тулд use
гэсэн түлхүүр үгийг ашиглана уу.
Syntax #
<?php
class MyClass {
use TraitName;
}
?>
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Example Explained #
Жишээ тайлбарласан #
Here, we declare one trait: message1. Then, we create a class: Welcome. The class uses the trait, and all the methods in the trait will be available in the class.
Энд бид нэг шинж чанарыг тунхаглаж байна: message1. Дараа нь бид анги байгуулна: Тавтай морилно уу. Анги нь уг шинж чанарыг ашигладаг бөгөөд шинж чанар дахь бүх аргууд нь ангид нээлттэй байх болно.
If other classes need to use the msg1() function, simply use the message1 trait in those classes. This reduces code duplication, because there is no need to redeclare the same method over and over again.
Хэрэв бусад ангиуд msg1 () функцийг ашиглах шаардлагатай бол эдгээр ангиудад message1 шинж чанарыг ашиглахад хангалттай. Энэ нь ижил аргаар дахин дахин зарлах шаардлагагүй тул кодын давхардлыг бууруулдаг.
PHP – Using Multiple Traits #
Let’s look at another example:
Өөр нэг жишээг авч үзье.
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2() {
echo "OOP reduces code duplication!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
Example Explained #
Тайлбарласан Жишээ #
Here, we declare two traits: message1 and message2. Then, we create two classes: Welcome and Welcome2. The first class (Welcome) uses the message1 trait, and the second class (Welcome2) uses both message1 and message2 traits (multiple traits are separated by comma).
Энд бид хоёр шинж чанарыг тунхаглаж байна: message1 ба message2. Дараа нь бид тавтай морилно уу, тавтай морилно уу гэсэн хоёр анги үүсгэдэг. Эхний анги (тавтай морилно уу) message1 шинж чанарыг ашигладаг бол хоёр дахь анги (тавтай морилно уу2) message1 ба message2 шинж чанарыг хоёуланг нь ашигладаг (олон шинж тэмдгийг таслалаар тусгаарладаг).