Jump to content
php.lv forumi

Self:: vs $this


MZM

Recommended Posts

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 :)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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ē.

Link to comment
Share on other sites

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::

Link to comment
Share on other sites

  • 4 weeks later...
×
×
  • Create New...