Jump to content
php.lv forumi

Self:: vs $this


Recommended Posts

Posted

Radās vēlme apgūt OOP. Nevis tapē ka vajaga, bet lai garāks (izpildes laiks ;)).

 

Tad nu aš jautājumiņš par PHP5

ar ko atšķiras / labākas / sliktākas tālākminētās pieejas:

 

1) self::function();

2) $this->function();

 

To, ka pirmajā brīdī rezultāts izskatās vienāds, es jau noskaidroju :)

Posted

Cik sapratu, tad :: izmantošana var būt lietderīga gadījumos, kad tev ir jāizmanto arī pamata klases funkcijas. Tad ar self:: izsauc šīs klases funkcijas, bet ar parent:: vari tikt klāt arī tai klasei, kuru tu esi atvasinājis un izveidojis jauno klasi.

Ja iepriekšējie pāris teikumi nav skaidri, tad iebrien šeit:

http://www.zend.com/manual/language.oop5.p...nekudotayim.php

un apskaties piemērus, uzreiz taps skaidrs :)

Lai nu kā, tā kā iekš PHP4 nebija tādu self un parent, tad varētu secināt, ka $this ir sava veida backward-compability, lai pāreja uz PHP5 nebūtu tik sāpīga.

Posted
Cik sapratu, tad :: izmantošana var būt lietderīga gadījumos, kad tev ir jāizmanto arī pamata klases funkcijas. Tad ar self:: izsauc šīs klases funkcijas, bet ar parent:: vari tikt klāt arī tai klasei, kuru tu esi atvasinājis un izveidojis jauno klasi.

Ja iepriekšējie pāris teikumi nav skaidri, tad iebrien šeit:

http://www.zend.com/manual/language.oop5.p...nekudotayim.php

un apskaties piemērus, uzreiz taps skaidrs :)

Lai nu kā, tā kā iekš PHP4 nebija tādu self un parent, tad varētu secināt, ka $this ir sava veida backward-compability, lai pāreja uz PHP5 nebūtu tik sāpīga.

13611[/snapback]

Hm. Tik daudz jau pac sapratu.

Patestēju un noskaidroju galveno atšķirību - :: var lietot bez objekta, $this-> tikai ar. TB. Ja izsauc klases funkciju A, kas izsauc funkciju B bez klases objekta izveidošanas, tad :: nostrādās, bet $this-> paziņos par kļūdu. Neesu pārliecināts, vai tā ir tikai backw. com. fīča.

 

Acīmredzot turpmāk būs vienmēr japaredz, vai klases funkcijām jāspēj darboties arī bez objektiem vai nē.

Posted

Normāli OOP'ā jau tikai funkcijas, kurām pielikts keywoards static spēj darboties bez klases instances, bet kā patstāvīgas funkcijas, tikai objekta neimspeisā :)

Un manuprāt es piekrītu Kaklz, ka $this-> ir tikai backward comp. fīča ar PHP4, normāli iekš PHP5 būtu jālieto self::

  • 4 weeks later...
Posted
1) self::function();

2) $this->function();

13608[/snapback]

1. gadījumā tiek izsaukta statiska metode, kas attiecas uz visu klasi kopumā.

2. gadījumā dinamiskā metode, kas attiecas tikai uz konkrētu klases eksemplāru.

Posted
Lai nu kā, tā kā iekš PHP4 nebija tādu self un parent, tad varētu secināt, ka $this ir sava veida backward-compability, lai pāreja uz PHP5 nebūtu tik sāpīga.

Labriit!

 

self un parent ir PHP4 !

×
×
  • Create New...