دسته بندی ها
20:15 1399/10/10

استفاده مجدد از کدها یا Trait در Php چیست و چگونه انجام می شود ؟

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : PHP

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3595
هوش مصنوعی

پاسخ هوش مصنوعی

در PHP، Traits یک مکانیزم برای استفاده مجدد از کدها در زبان برنامه نویسی شیءگرا هستند. Traits به شما امکان می دهند تا متدهایی را تعریف کنید که می توانند توسط کلاس های مختلف استفاده شوند، بدون اینکه نیاز به وراثت چندگانه باشد.

این ویژگی به ویژه زمانی مفید است که شما بخواهید متدهایی را به چندین کلاس اضافه کنید بدون اینکه نیاز به ایجاد هیرارشی کلاس پیچیده داشته باشید.

برای استفاده از Traits در PHP، ابتدا یک Trait را تعریف می کنید و سپس آن را در کلاس های مختلف با استفاده از کلید واژه use شامل می کنید.

در زیر یک مثال از نحوه استفاده از Traits در PHP آورده شده است:


trait Logger {
    public function log($message) {
        echo "Log: " . $message . "\n";
    }
}

class User {
    use Logger; // استفاده از Trait Logger
    
    public function create($userName) {
        $this->log("User $userName created.");
    }
}

class Product {
    use Logger; // استفاده از Trait Logger
    
    public function add($productName) {
        $this->log("Product $productName added.");
    }
}

$user = new User();
$user->create("Alice");

$product = new Product();
$product->add("Laptop");

در این مثال، ما یک Trait به نام Logger تعریف کرده ایم که یک متد log دارد. سپس این Trait را در دو کلاس User و Product استفاده کرده ایم. هر دو کلاس می توانند از متد log استفاده کنند و پیام های مختلفی را ثبت کنند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 13:22 1399/10/11

استفاده مجدد از کدها یا Trait در Php چیست

 

trait در php چیست

 

یکی از جنبه های مهم در برنامه نویسی شی گرا این می باشد که برنامه نویس بتواند از کدها و کلاسهایی که قبلا نوشته است مجددا استفاده کند. در PHP، برای استفاده مجدد از کدها ما می توانستیم در کلاس های مختلف،  از ارث بری (inheritance) استفاده می کنیم. اما محدودیتهایی وجود داشت. این محدودیت این بود که یک کلاس فقط میتوانست از یک کلاس دیگر ارث بری کند.

 

تعریف Trait در PHP

خب اجازه بدید اول یک تعریف از Trait براتون بگم. میشه گفت trait یک روش ارث بری از کلاس هست، البته روش ارث بری قبلی هم وجود داره هنوز. Trait ها ابزارهایی در PHP هستند که می تونید با نوشتن اونها و ارث بری از آنها در کلاس های مختلف کد های reusable داشته باشیم و مجبور نباشیم توابع و متدهای خودمون رو چند بار بنویسیم.

در واقع اگر کلاسی داشته باشیم که نیاز داشته باشد از چندین کلاس دیگر ارث بری کند در اینجا می توانیم از Trait استفاده کنیم.

 

چگونه در PHP یک Trait ایجاد کنیم

برای تعریف Trait در PHP از کلمه کلیدی "trait" استفاده می شود.

<?php
trait TraitName {
  // some code...
}
?>

 

برای استفاده از Trait در یک کلاس هم به صورت زیر عمل می کنیم. برای این منظور از کلمه کلیدی "use" استفاده می کنیم.

<?php
class MyClass {
  use TraitName;
}
?>

 

نکته : دقت کنید تعریف یک trait جدید در Php مانند تعریف یک کلاس جدید می باشد.

 

به مثال زیر که یک trait ایجاد کرده ایم و از آن استفاده کرده این دقت کنید :

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

 

همانطور که مشاهده می کنید در مثال بالا در ابتدا یک trait به نام message1 ایجاد کرده ایم. این trait شامل یک متد به نام msg1 می باشد. خب در ادامه یک class به نام welcome تعریف شده است که یا استفاده از کلمه کلیدی "use" توانسته این trait با نام message1 را در این کلاس استفاده کنیم. در حال حاضر به همه متدهای این trait در کلاس welcome دسترسی داریم. در ادامه از این متد msg1 استفاده کرده ایم.

 

استفاده از چند trait به صورت همزمان در php

می توان چندین 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();
?>

در کدهای بالا دو trait به نام های message1 و message2 داریم. همچنین دو کلاس به نام های Welcome و Welcome2 داریم. در کلاس Welcome2 از هر دو trait استفاده شده است. به عبارتی در این کلاس هم به متدها و توابع message1 و هم به متدها و توابع message2 دسترسی داریم.

 

ایجاد یک trait شامل چند trait دیگر

می توانیم دو یا چند trait داشته باشیم. سپس یک trait ایجاد کنیم که سایر trait در آن use شوند و در کلاس از همان یک trait استفاده شود.

 

<?php
trait t1 {
    public function firstname() {
        echo 'Ali';
    }
}

trait t2{
    public function Family() {
        echo 'ramezani!';
    }
}

trait myname{
    use firstname, Famili;
}

class username {
    use myname;
}

 

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود