Rumah php教程 php手册 PHP中如何定义类及其成员属性与操作

PHP中如何定义类及其成员属性与操作

Jun 13, 2016 am 09:43 AM
php dan dan bagaimana takrifan objek harta benda ahli beroperasi ya konsep daripada baik hati berkumpul

 类的概念:类是具有相同属性和操作的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和操作说明两个主要部分。


1、类的定义:

i. 类的关键字定义使用class


1.定义一个空类

Class Person{};

2.定义一个有成员属性和操作的类

Class Person{

成员属性........

操    作........

}

3.定义一个不能被继承的类,使用final关键字

Final class Person{

成员属性........

操    作........

}

4.注意:final关键字不能用来修饰成员属性 ,只能修饰类和方法(final方法后面介绍)

5.这里举一个带有final的class

定义一个final的类FinalClass,包含一个公共函数

final class FinalClass {

public function ffun() {

echo “本类为final类”;

}

}

定义一个类ChildFinalClass 并继承FinalClass 类

class ChildFinalClass extends FinalClass {

public function fchildfun() {

echo ‘本类继承final类FinalClass ’;


}

}

这样当执行以上命令的时候系统会提示


Fatal error: Class ChildFinalClass may not inherit from final class (FinalClass)


证明由final关键字定义的class是不可以被子类继承的

 

2、类中成员属性的定义

i. 成员属性就是对该类定义的一些变量属性,那人作为一个类来说,人都有一对眼睛(正常的啊,二郎神除外),一张嘴,两个耳朵,等这样的一些固定的用来描述或表现某种事物的专有名词称为成员属性

ii. 类中成员属性的声明使用的关键字

iii. 常见成员属性声明是由关以下键字
public,var,protected,private开头的,然后跟一个变量来组成的。还有一些成员属性包括,静态static,常量const.

Public: 表示全局的,类内部外部子类都可以访问

Var:     php 5 版本中会认为这个成员属性为public类型的属性

protected 表示受保护的,只有本类或子类或父类中可以访问


private
表示私有的,只有本类内部可以使用

 

Static:    1)静态的属性,

2)用static修饰的成员属性可以被同一个类的所有对象共享

3) 静态的数据是在类第一次被加载的时候就存在了内存中的数据段中(初始化静态段)

4)类中使用self::成员属性名

                         5)类外  类名::成员属性名

Const:   1)类中常量属性,在类中声明常量必须使用const

                         2)类中使用  self::成员属性名

                         3)类外使用  类名::成员属性名


注意:属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段运算出的常数。例如,不能包含任何运算符,不能是任何变量,不能是一个函数等。

iv. 成员属性的调用方式:

在类的成员方法里面,可以通过 $this->property(property是属性名字)这种方式来访问类的属性、 方法,但是要访问类的静态属性或者在静态方法里面却不能使用,而是使用 self::$property。 在类的非静态方法里面可以使用伪变量 $this,这个伪变量是调用该方法的实例化对象引用。


接下来用代码对上面的内容做一下解释:

class FinalClass {


//static $a = strTolower();   
//这种写法错误


//const  A = 1+2;              //这种写法错误


//public $name = 123+456;     
//这种写法错误


static $a = '$a';


const  A = 'A';


public $name = '凤姐';


protected $sex = '男+女';


private $age = 23;


}


class ChildFinalClass extends FinalClass{


public function fchildfun(){


echo 'ChildFinalClass类中ChildFinalClass::$a->'.ChildFinalClass::$a."


";


Echo 'ChildFinalClass类中ChildFinalClass::A->'.ChildFinalClass::A."


";


echo '大家好,我叫'.$this->name."


";


echo '我是:'.$this->sex.'生


';


echo '我今年:'.$this->age.'


';   

//由于age是私有的成员属性,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。

 

}


}


$obj = new ChildFinalClass();


$obj->fchildfun();

 

3、类中操作的定义

i. 我本人一般喜欢叫操作为成员方法,以下我会叫操作为方法其实都是一样的

ii. 成员方法的定义:成员方法就是对该类定义的一些函数方法,比如拿这个类来例句例子,人能吃饭,能跑步,能敲代码,这就是成员方法。也就是可以做一些可执行性的动作我们理解为成员方法

iii. 成员方法的访问和成员属性一样可以参照上面成员属性的访问介绍。

iv. 成员方法和成员属性一样也包括public,protected,private,static,final并且作用域也是一样的,接下来举一些例子供大家参考和理解。

v. 静态的成员方法只能访问静态的成员属性和成员方法,并且类内部访问静态方法可以使用self::静态方法(),  类外部访问使用类名::静态方法()


1. 自定义方法:

class FinalClass {

static $a = '$a';

const  A = 'A';

public $name = '凤姐';

protected $sex = '男+女';

private $age = 23;

 

    //定义一个公共方法

public function publickfun(){


echo 'FinalClass类中self::$a->'.self::$a."


";


echo "FinalClass类中self::A->".self::A."


";


echo '大家好,我叫:'.$this->name."


";


echo '我是:'.$this->sex.'生


';


echo '我今年:'.$this->age.'


';

}

 

//定义一个受保护的方法


protected function protectedfun(){


echo 'FinalClass类中self::$a->'.self::$a."


";


echo "FinalClass类中self::A->".self::A."


";


echo '大家好,我叫:'.$this->name."


";


echo '我是:'.$this->sex.'生


';


echo '我今年:'.$this->age.'


';


}


    //定义一个私用方法

private function privatefun(){

echo 'FinalClass类中self::$a->'.self::$a."


";

echo "FinalClass类中self::A->".self::A."


";

echo '大家好,我叫:'.$this->name."


";

echo '我是:'.$this->sex.'生


';

echo '我今年:'.$this->age.'


';


}

}


class ChildFinalClass extends FinalClass{

public function fchildfun(){

echo 'ChildFinalClass类中ChildFinalClass::$a->'.ChildFinalClass::$a."


";

 

Echo 'ChildFinalClass类中ChildFinalClass::A->'.ChildFinalClass::A."


";

 

echo '我是:'.$this->sex.'生


';

 

echo '我今年:'.$this->age.'


';   

//由于age是私有的成员属性,可以理解为我不想让别人知道我的年龄,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。

 

$this->publickfun();

 

$this->protectedfun();

 

$this->privatefun();            

//由于privatefun是私有的成员方法,所以在这里将不会被调用。


}

}


$obj = new ChildFinalClass();


$obj->fchildfun();


2.魔术方法

i. 魔术方法必须被定义为公共的,所有其他魔术方法都必须如此

ii. 从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法,接下来列出一些魔术方法,如果大家想详细了解可以针对某一个进行查询了解,这里就不大篇幅的介绍了。

1、__construct() 构造方法


__destruct()

析构方法

2、__clone()

如果想复制一个对象则需要使用clone方法

3、__toString()

方法在将一个对象转化成字符串时自动调用,比如使用echo打印对象时

4、__sleep()  串行化的时候用


__wakeup 反串行化的时候调用

5、 __set_state()

当调用var_export()时,这个静态 方法会被调用(自PHP 5.1.0起有效)

6、__invoke(PHP 5.3.0以上版本有效)
当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。

7、__callStatic(PHP 5.3.0以上版本有效) 是为了处理静态方法调用

8、__get()  当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名。


__set()  给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。 这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。

9、__isset() 当在一个未定义的属性上调用isset()函数时调用此方法


__unset() 当在一个未定义的属性上调用unset()函数时调用此方法

10、__call( $method, $arg_array )
当调用一个未定义的方法是调用此方法

这里的未定义的方法包括没有权限访问的方法;如果方法不存在就去父类中找这个方法,如果父类中也不存在就去调用本类的__call()方​法,如果本类中不存在__call()方法就去找父类中的__call()方法。

11、__autoload() 自动加载魔术方法

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.

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

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

7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini 7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini Nov 13, 2024 am 09:42 AM

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

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

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apr 03, 2025 am 12:03 AM

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

See all articles