مجتمع دیجیتال آرتا رسانه فعال در حوزه های برنامه نویسی بلاکچین - دیجیتال مارکتینگ و سئو - طراحی سایت و اپلیکیشن های موبایل - طراحی گرافیکی و موشن گرافیک و تولید محتوای دیجیتال جهت رونق کسب و کارها در فضای مجازی
در php یک فرزند حق دارد از یک والد ارث بری کند ولی اگر نیاز داشته باشیم که از چند کلاس ارث بری داشته باشیم برای رفع این محدودیت از Traits استفاده میکنیم. trait یک اسم داره که هر جا تو هر کلاسی لازم داشتیم که استفاده کنیم با use اسم trait رو استفاده میکنیم. می توانیم چند بار هم استفاده کنیم.
<?php
trait TraitName {
// some code…
}
?>
می توانیم چندتا traitهم تعریف کنیم و در کلاسها استفاده کنیم.
<?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();
?>
برای اینکه بتوانیم فراخوانیهای درستی داشته باشیم باید توابع رو static تعریف کنیم.
<?php
class ClassName {
public static function staticMethod() {
echo “Hello World!”;
}
}
?>
برای استفاده از static باید اسم کلاس رو بنویسیم بعد :: قرار بدهیم و staticMethod() رو قرار بدهیم: ClassName::staticMethod();
در این حالت برای دسترسی نیازی به نمونه سازی نداریم و به طریق بالا دسترسی پیدا میکنیم.
<?php
class greeting {
public static function welcome() {
echo “Hello World!”;
}
}
// Call static method
greeting::welcome();
?>
وقتی داخل متد استاتیک از constructor استفاده کنیم میتوانیم از کلمه self به جای استاتیک استفاده میکنیم.
<?php
class greeting {
public static function welcome() {
echo “Hello World!”;
}
public function __construct() {
self::welcome();
}
}
new greeting();
?>
<?php
class ClassName {
public static $staticProp = “W3Schools”;
}
?>
ClassName::$staticProp;
<?php
class pi {
public static $value = 3.14159;
}
// Get static property
echo pi::$value;
?>
Namespacesها کمک میکنند ما از کتابخانه ها استفاده کنیم. namespace Html;
کتابخانه html شامل توابع و متدهایی است که داخل آن هست و می توانیم با namespace به آن دسترسی پیدا کنیم.
اگر namespace زیرشاخه یک namespace دیگهای باشه به شکل زیر بهش دسترسی پیدا میکنیم. namespace Code\Html;
برای استفاده از namespace می توانیم بدون فراخوانی کتابخانه به آن دسترسی پیدا کنیم. مثال زیر برای html است:
$table = new Html\Table()
$row = new Html\Row();