Cara menggunakan php memperpanjang sifat

Cara membuat Trait yang pertama adalah menyiapkan directory terlebih dahulu. Saya membuat direktori baru agar susunan file program lebih rapi. Di sini saya membuat direktori app/Http/Traits. Kemudian buat file php biasa yang saya beri nama misalnya GeneralTrait. php. berikut isi filenya


namespace App\Http\Traits;


sifat UmumTrait

{

fungsi publik plus($a, $b){

kembalikan $a + $b;

}


fungsi publik dikurangi ($a, $b){

mengembalikan $a - $b;

}

}


Sama seperti membuat file Controller, di sini Anda perlu menggunakan namespace untuk menunjukkan lokasi file tersebut. Pada kode diatas saya membuat dua fungsi umum yaitu plus untuk melakukan penjumlahan dan minus untuk melakukan pengurangan. Fungsi tersebut tidak akan berguna dalam program sebenarnya, namun karena disini saya hanya memberikan contoh sederhana agar dapat dipahami



#METODE PENGGUNAAN

Seperti biasa, saya siapkan terlebih dahulu rutenya seperti kode di bawah ini


Rute. get('/trait','TraitController@index');


Dan selanjutnya adalah isi dari file TraitController. php


namespace App\Http\Controllers;


gunakan Illuminate\Http\Request;

gunakan App\Http\Controllers;

gunakan App\Http\Traits\GeneralTrait;


kelas TraitController memperluas Pengontrol {

gunakan Sifat Umum;


indeks fungsi publik()

{

gema $ini->plus(5,3);

        echo "
";

gema $ini->minus(5,3);

}


}


Ada 2 hal yang perlu dilakukan agar kamu bisa menggunakan Trait yang sudah dibuat. Yang pertama adalah menggunakan lokasi dari file Trait yang Anda buat di atas dan yang kedua adalah menggunakan nama Trait di Class Controller


Cara memanggilnya adalah dengan menggunakan variabel $this diikuti dengan nama fungsi pada Trait yang ingin digunakan. Seperti yang sudah dijelaskan sebelumnya, sifat ini bisa digunakan di berbagai class asalkan kita sertakan using use. Dan selain itu kita juga bisa menggunakan banyak Traits sekaligus dalam 1 Class. Hal ini tentu berguna untuk mengurangi penulisan kode yang berulang



Sifat ini sendiri fungsinya mirip dengan Helper yang sudah saya jelaskan pada artikel sebelumnya


Baca juga

Tutorial Laravel5. 5 - Cara Membuat dan Menggunakan Pembantu


Saya pribadi lebih suka menggunakan dengan Helper karena fungsi pada Helper yang saya buat juga bisa dipanggil di view, sedangkan sistem Trait ini hanya membolehkan fungsi dipanggil melalui Controller saja


Mungkin pemahaman saya tentang Trait ini cukup kurang karena saya pribadi belum pernah menerapkannya di real programming. Pemilihan Trait atau Helper tinggal disesuaikan dengan kebutuhan program yang Anda buat. Selamat mencoba

Halo Semua, Akhir-akhir ini saya menggunakan Trait di Laravel. Apa itu sifat, singkatnya Sifat tidak lain adalah sekelompok metode dan fungsi yang dapat digunakan kembali yang dapat digabungkan ke dalam kelas lain

Oke langsung saja login, disini saya akan membuat Trait untuk menyimpan log Action. Mengapa Anda harus menggunakan Trait bang? . Pertama, kita buat file trait terlebih dahulu. Karena sifat ini tidak ada di tukang perintah, kita lakukan secara manual saja. Saya biasanya melakukannya di app/Trait/NameTrait. php. Disini saya buat dengan nama ActionLogTrait. php. Kemudian isi file tersebut dengan kode di bawah ini

Kelas yang digunakan untuk menjaga agar kode kita tetap ramping dan KERING (Jangan Ulangi Sendiri). Karena sangat baik jika kita memiliki kelas yang fungsinya digunakan di banyak tempat di proyek kita

Ciri-ciri adalah mekanisme penggunaan kembali kode dalam bahasa pewarisan tunggal seperti PHP. Trait dimaksudkan untuk mengurangi beberapa batasan warisan tunggal dengan memungkinkan pengembang untuk menggunakan kembali set metode secara bebas di beberapa kelas independen yang tinggal di hierarki kelas yang berbeda. Semantik kombinasi Sifat dan kelas didefinisikan dengan cara yang mengurangi kompleksitas, dan menghindari masalah khas yang terkait dengan pewarisan berganda dan Mixin

Trait mirip dengan class, tetapi hanya dimaksudkan untuk mengelompokkan fungsionalitas dengan cara yang halus dan konsisten. Tidak mungkin untuk membuat Instance Trait sendiri. Ini merupakan tambahan dari warisan tradisional dan memungkinkan komposisi horizontal dari perilaku;

Contoh #1 Contoh sifat

trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
function getReturnDescription() { /*2*/ }
}

class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>

Hak lebih tinggi

Anggota yang diwariskan dari kelas dasar ditimpa oleh anggota yang disisipkan oleh suatu Sifat. Urutan yang didahulukan adalah anggota dari kelas saat ini menimpa metode Sifat, yang pada gilirannya menggantikan metode yang diwariskan

Contoh #2 Contoh Urutan Keutamaan

Metode yang diwariskan dari kelas dasar diganti dengan metode yang dimasukkan ke MyHelloWorld dari Sifat SayWorld. Perilakunya sama untuk metode yang didefinisikan dalam kelas MyHelloWorld. Urutan prioritasnya adalah bahwa metode dari kelas saat ini menimpa metode Sifat, yang pada gilirannya menggantikan metode dari kelas dasar

class Base {
public function sayHello() {
echo 'Hello ';
}
}

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_

class MyHelloWorld extends Base {
use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?>
_

Contoh di atas akan ditampilkan

Contoh #3 Contoh Urutan Prioritas Alternatif

trait HelloWorld {
public function sayHello() {
echo 'Hello World!';
}
}

class TheWorldIsNotEnough {
use HelloWorld;
public function sayHello() {
echo 'Hello Universe!';
}
}
_

$o = new TheWorldIsNotEnough();
$o->sayHello();
?>
_

Contoh di atas akan ditampilkan

Beberapa Sifat

Banyak Sifat dapat dimasukkan ke dalam kelas dengan mencantumkannya dalam pernyataan class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
0, dipisahkan dengan koma

Contoh #4 Penggunaan Beberapa Sifat

class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_1

class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_2

class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_3

class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_4

Contoh di atas akan ditampilkan

Resolusi konflik

Jika dua Sifat menyisipkan metode dengan nama yang sama, kesalahan fatal dihasilkan, jika konflik tidak diselesaikan secara eksplisit

Untuk menyelesaikan konflik penamaan antara Sifat yang digunakan dalam kelas yang sama, operator class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
5 harus digunakan untuk memilih salah satu metode yang bertentangan

Karena ini hanya memungkinkan seseorang untuk mengecualikan metode, operator class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
6 dapat digunakan untuk menambahkan alias ke salah satu metode. Perhatikan bahwa operator class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_6 tidak mengganti nama metode dan juga tidak memengaruhi metode lainnya

Contoh #5 Penyelesaian Konflik

Dalam contoh ini, Pembicara menggunakan sifat A dan B. Karena A dan B memiliki metode yang bertentangan, ia mendefinisikan untuk menggunakan varian smallTalk dari sifat B, dan varian bigTalk dari sifat A

Aliased_Talker memanfaatkan operator class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
6 untuk dapat menggunakan implementasi bigTalk B di bawah alias tambahan class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
9

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>
0

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>
1

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>
2

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>
_3

Mengubah Visibilitas Metode

Menggunakan sintaks class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_6, seseorang juga dapat menyesuaikan visibilitas metode di kelas yang dipamerkan

Contoh #6 Mengubah Visibilitas Metode

trait HelloWorld {
public function sayHello() {
echo 'Hello World!';
}
}

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>
6

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>
7

Sifat-sifat Terdiri dari Sifat-sifat

Sama seperti kelas dapat menggunakan sifat, demikian juga sifat lainnya. Dengan menggunakan satu atau lebih sifat dalam definisi sifat, dapat disusun sebagian atau seluruhnya anggota yang didefinisikan dalam sifat-sifat lain tersebut

Contoh #7 Ciri-ciri yang Disusun dari Ciri-Ciri

class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* .. */
}
_1

class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* .. */
}
?>
_9

class Base {
public function sayHello() {
echo 'Hello ';
}
}
0

class Base {
public function sayHello() {
echo 'Hello ';
}
}
1

class Base {
public function sayHello() {
echo 'Hello ';
}
}
2

Contoh di atas akan ditampilkan

Anggota Sifat Abstrak

Ciri-ciri mendukung penggunaan metode abstrak untuk memaksakan persyaratan pada kelas yang dipamerkan. Metode publik, dilindungi, dan pribadi didukung. Sebelum PHP 8. 0. 0, hanya metode abstrak publik dan dilindungi yang didukung

Hati-hati

Kelas konkret memenuhi persyaratan ini dengan mendefinisikan metode konkret dengan nama yang sama;

Contoh #8 Persyaratan Ekspres dengan Metode Abstrak

class Base {
public function sayHello() {
echo 'Hello ';
}
}
_3

class Base {
public function sayHello() {
echo 'Hello ';
}
}
_4

Anggota Sifat Statis

Sifat dapat menentukan variabel statis, metode statis, dan properti statis

Catatan

Mulai dari PHP 8. 1. 0, memanggil metode statis, atau mengakses properti statis secara langsung pada suatu sifat sudah tidak digunakan lagi. Metode dan properti statis hanya boleh diakses di kelas yang menggunakan sifat tersebut

Contoh #9 Variabel Statis

class Base {
public function sayHello() {
echo 'Hello ';
}
}
5

class Base {
public function sayHello() {
echo 'Hello ';
}
}
6

class Base {
public function sayHello() {
echo 'Hello ';
}
}
_7

class Base {
public function sayHello() {
echo 'Hello ';
}
}
8

Contoh #10 Metode Statis

class Base {
public function sayHello() {
echo 'Hello ';
}
}
_9

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_0

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_1

Contoh #11 Properti Statis

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_2

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_0

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_4

Properti

Sifat juga dapat menentukan properti

Contoh #12 Mendefinisikan Properti

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_5

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_6

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_7

Jika suatu sifat mendefinisikan properti maka kelas tidak dapat mendefinisikan properti dengan nama yang sama kecuali itu kompatibel (visibilitas dan jenis yang sama, pengubah hanya baca, dan nilai awal), jika tidak, kesalahan fatal akan dikeluarkan

Contoh #13 Penyelesaian Konflik

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_8

trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
_9

Konstanta

Traits bisa, mulai dari PHP 8. 2. 0, tentukan juga konstanta

Contoh #14 Mendefinisikan Konstanta

class MyHelloWorld extends Base {
use SayWorld;
}
0

class MyHelloWorld extends Base {
use SayWorld;
}
1

class MyHelloWorld extends Base {
use SayWorld;
}
2

Jika suatu sifat mendefinisikan konstanta maka kelas tidak dapat mendefinisikan konstanta dengan nama yang sama kecuali itu kompatibel (visibilitas, nilai awal, dan finalitas yang sama), jika tidak, kesalahan fatal akan dikeluarkan

Apa sifat-sifat dalam PHP?

Apa itu Sifat? . Sifat ini tidak dapat diinstansiasi dengan sendirinya, sehingga harus dipanggil dalam kelas seperti contoh di bawah ini. kumpulan dari beberapa method yang ingin kamu pakai di dalam class lain. Trait ini tidak bisa di instantiated sendiri, jadi harus di panggil dalam sebuah class seperti contoh di bawah ini.

Apa itu sifat laravel?

Trait adalah mekanisme yang mirip dengan class untuk mengelompokkan suatu method berdasarkan penggunaannya, sehingga dapat digunakan kembali (Reusable) di beberapa class tanpa melalui keturunan (Inheritance).