Rumah pembangunan bahagian belakang tutorial php php中Trait的使用说明

php中Trait的使用说明

Jun 28, 2018 pm 03:17 PM

 * Trait是什么?

 * 1.trait是为单继承语言量身定制的代码复用机制;

 * 2.之前可以通过函数或类来实现代码复用;

 * 3.trait可以简单的理解为一个类方法的集合,工作在父类与子类之间;

 * 4.但是trait不仅仅局限于方法集合,还支持抽象,静态与属性;

 * 5.当前类成员会覆盖trait类成员,而trait中的成员,又可以覆盖同名类成员

 * 6.重要提示:trait不是类,不能实例化,切记切记

//声明父类: Person

if (!class_exists('Person')) {
  class Person
    {
        protected $name;
        
        public function __construct($name='小明')
        {
            $this->name = $name;
        }
        
        public function study($course='php')
        {
            return $this->name.'在学习'.$course;
        }
    
        
    }  
}
Salin selepas log masuk

//声明trait类:Course 课程

if(!trait_exists('Course')){
    trait Course
    {
        //trait中也可以自己的属性
        public $friend='小华';
        public function sport($name='踢足球')
        {
//            return $this->name.'在学习'.$name;
            //trait中可以访问父类中的属性
            return $this->name.'和'.$this->friend.'在学习'.$name;
        } 
        
        //trait中同样支持抽象,以及静态方法,我放在一起写了
        //我把这个方法声明为抽象的同时,也声明为静态
        abstract public static function hobby($name);
        
        
        //在trait中也声明一个与父类同名的study()方法,参数修改一下以示区别
        public function study($course='java')
        {
            return $this->name.'在学习'.$course;
        }
    }
}
Salin selepas log masuk


//声明trait类:Recreation 娱乐

if(!trait_exists('Recreation')){
    trait Recreation
    {
        //这个trait类中也声明一个与Course中同名的方法sport
        //注意: 属性$friend不允许与Course::sport()同名
        //因为目前trait中还没有处理同名属性的机制,期待新版本会解决
        //这里我们将$friend 修改为 $friend1
        public $friend1='小军';
        public function sport($name='打蓝球')
        {
//            return $this->name.'在学习'.$name;
            //trait中可以访问父类中的属性
            return $this->name.'和'.$this->friend1.'在学习'.$name;
        } 
        
        
    }
}
Salin selepas log masuk

声明子类: Student ,继承自 父类: Person

class Student extends Person
{
    //导入trait类
//    use Course;
    
    //子类支持导入多个trait类,但不可避免的会遇到方法重名问题,怎么解决呢?
//    use Course, Recreation;  //同时引入二个trait类
    //如果这二个trait类中有重名方法,要用以下语句结构解决
    use Course, Recreation {
        //访问sport()方法冲突时,使用Course::sport()代替掉Recoreation::sport()
        Course::sport insteadof Recreation;
       
        //再访问Recoreation::sport()时启用别名 mySport()
        Recreation::sport as mySport;
    }
    
    //子类中必须实现trait中声明的抽象方法hobby()
    public static function hobby($name)
    {
        return $name;
    }
    
    //在子类中再声明一个与trait类同名的study()方法,参数修改一下以示区别
    public function study($course='python')
    {
        return $this->name.'在学习'.$course;
    }
    
}
Salin selepas log masuk


//实例化Student类

$student = new Student();
Salin selepas log masuk

//1.访问父类Person中的方法

echo $student->study();
echo &#39;<hr>&#39;;
Salin selepas log masuk
Salin selepas log masuk

//2.访问trait类中的方法

echo $student->sport();
echo &#39;<hr>&#39;;
Salin selepas log masuk

//3调用trait中的抽象静态方法,必须要用Student来访问

echo Student::hobby(&#39;抽烟喝酒烫头&#39;);
echo &#39;<hr>&#39;;
Salin selepas log masuk

//4.当trait中存在与父类同名方法时,trait优先级要高

echo $student->study();
Salin selepas log masuk

//5.当子类中存在与trait类同名方法时,子类优先级要高

echo $student->study();
echo &#39;<hr>&#39;;
Salin selepas log masuk
Salin selepas log masuk

//6.子类可以从多个trait中获取方法集

echo $student->sport();
echo &#39;<hr>&#39;;
echo $student->mySport();
Salin selepas log masuk

Atas ialah kandungan terperinci php中Trait的使用说明. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

See all articles