php類和對(duì)象之創(chuàng)建一個(gè)對(duì)象
<?php //定義一個(gè)Car類并實(shí)例化一個(gè)對(duì)象 class?Car{ ?public?$name='car'; ?public?function?getName(){ ?????return?$this->name; ?} } $car=new?Car(); //?$car->name='adfa'; echo?$car->getName(); ?>
為什么當(dāng)實(shí)例化對(duì)象$car->name屬性注釋掉,返回的結(jié)果是car;如果沒(méi)有注釋掉,返回的結(jié)果是adfa,不太理解以及this指針在這里的作用
2016-11-06
name在這里是類的屬性,即這個(gè)類的對(duì)象的公共屬性,
代碼為你演示的重點(diǎn)是類的屬性和方法之間的調(diào)用,即在外部如何通過(guò)方法調(diào)用屬性。
實(shí)際案例中,經(jīng)常是將將類的屬性設(shè)置為保護(hù)或私有,如果需要用到該屬性,只能在類中通過(guò)方法獲取和賦值,
而不能在外部通過(guò)類名->屬性名獲取或賦值。
如代碼中的get方法獲取,同理賦值也在類內(nèi)部,防止像$car->name=''的外部隨意賦值的情況。
至于原因呀,太多說(shuō)不完,安全/規(guī)范/資源等等拉。
你比我強(qiáng)的是,我以前學(xué)的時(shí)候都不會(huì)思考這種情形,只會(huì)按部就班來(lái)什么學(xué)什么。
2017-04-24
我的理解,假如你家有各種車。 你老婆說(shuō)開車送我,這個(gè)車沒(méi)特指(你只知道開車,沒(méi)特指哪一輛,你腦子里只有“開車”,echo 開車;)。假設(shè)你是死腦筋,這車就開不了,因?yàn)樗麤](méi)說(shuō)開哪輛。這個(gè)車就類似那個(gè) 類 的概念。
然后你老婆又說(shuō),開奧迪,這就是實(shí)例化了,你腦子里有了“開奧迪”, echo 開奧迪;。
2016-11-27
just for demonstration!
2016-11-06
我理解了你說(shuō)的意思,可是我覺(jué)得在實(shí)際案例中有必要聲明類的name屬性嗎(public?$name='car';)?他要獲取的應(yīng)該是實(shí)例化對(duì)象的name,為什么此案例中還寫了這一句呢?
2016-11-06
$this是指這個(gè)對(duì)象本身,注釋掉的時(shí)候走的流程:實(shí)例化對(duì)象-->調(diào)用方法getName-->getName獲得對(duì)象的name屬性,也就是car;而沒(méi)有注釋時(shí),實(shí)例化對(duì)象-->給對(duì)象的name屬性重新賦值為adfa-->調(diào)用方法getName-->getName獲得對(duì)象的name屬性(已經(jīng)重新賦值為adfa),所以輸出為adfa。簡(jiǎn)單的說(shuō),注釋掉輸出的是初始的name屬性,沒(méi)注釋輸出的是重新賦值后的name屬性。希望說(shuō)清楚了