tag:blogger.com,1999:blog-2393928730217680638.post8345890861189112706..comments2024-03-26T08:08:29.526+01:00Comments on Irminsul weblog: OOP v PHP5 díl.6 - viditelnost a klíčová slovaAleš Dostálhttp://www.blogger.com/profile/00371533290443279003noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-2393928730217680638.post-82501880222440044962007-03-28T09:50:43.000+02:002007-03-28T09:50:43.000+02:00V PHP vidí protected vlastnosti i předek :-).Já ja...V PHP vidí protected vlastnosti i předek :-).<br><br>Já jako výchozí viditelnost používám protected. Nikdy nevíš, kdo po tobě bude dědit (pokud nenapíšeš závěť), takže před potomky skrývám jen to nejnutnější.Jakub Vránahttp://php.vrana.cz/noreply@blogger.comtag:blogger.com,1999:blog-2393928730217680638.post-30772706242679238252007-03-28T10:55:46.000+02:002007-03-28T10:55:46.000+02:00To protected lze samozřejmě takto využít, na druho...To protected lze samozřejmě takto využít, na druhou stranu, můžu mít v rodičovské tříde v set a get, na atribut, i další vlastnosti. Raději v potomkovi používám již metody z rodiče, než napřímo atributy. Jen použiji parent:: a vím, že volám metodu z rodiče. Tato directiva je samozřejmě důležitá, ve chvíli kdy udělám override metody, byl by to problém.<br>Viditelnost protected používám zejména u abstraktních tříd, kde je jasné, že daná třída bude mít potomka. U ostatních to předem vědět vůbec nemusím.a.dostalnoreply@blogger.comtag:blogger.com,1999:blog-2393928730217680638.post-81909844735226135932007-04-01T21:13:50.000+02:002007-04-01T21:13:50.000+02:00V tom prpade nemas mysl dedit. To si muzu v muzu v...V tom prpade nemas mysl dedit. To si muzu v muzu vytvorit parebta jen jako instanci a cist zni. Vubec nemusim dedit.<br><br>priklad dodam zitra.<br><br>se me zda ye se snazis vnaset veci z javy do PHP. A v PHP nejsou potreba.error414noreply@blogger.comtag:blogger.com,1999:blog-2393928730217680638.post-649314860340357552007-04-02T09:35:58.000+02:002007-04-02T09:35:58.000+02:00Proč by jsi dědit nemusel? Právě, že ano. Když uvá...Proč by jsi dědit nemusel? Právě, že ano. Když uvážím, že v parent třídě bude metoda, která mi "něco provádí" a já jí chci v potomkovi metodu rozšířit, tak udělám klasický override dané metody.<br><br>class A {<br> public function show() {<br> echo "Ahoj";<br> }<br>}<br>class B extends A {<br> public function show() {<br> parent::show();<br> echo " Světe";<br> }<br>}a.dostalnoreply@blogger.comtag:blogger.com,1999:blog-2393928730217680638.post-32199004222085893202007-04-02T13:46:30.000+02:002007-04-02T13:46:30.000+02:00class A {private function show() {echo "Ahoj&...class A {<br>private function show() {<br>echo "Ahoj";<br>}<br>}<br>class B{<br>public function show() {<br>parent::show();<br>echo "Ahoj";<br>}<br>}<br><br>$p = new B();<br>$p-&gt;show();<br><br>ja se bavim o tom proc implicitne nepouzivat private. Tohle totiz nejde.error414http://www.error414.comnoreply@blogger.comtag:blogger.com,1999:blog-2393928730217680638.post-73175663104973360442007-04-02T14:04:31.000+02:002007-04-02T14:04:31.000+02:00To je jasné, že to nejde. Máš přece metodu nastave...To je jasné, že to nejde. Máš přece metodu nastavenou jako private. Já se bavil o atributech tříd, které by měly být private. Co se týče samotných metod, tak je jasné, že private budou ty, které jsou pomocné pro fungování samotné třídy, zbylé jsou vesměs public popřípadě protected.a.dostalnoreply@blogger.comtag:blogger.com,1999:blog-2393928730217680638.post-29850671543950456022007-04-02T15:01:17.000+02:002007-04-02T15:01:17.000+02:00takze tohleclass A {private $ahoj = 'ahoj1'...takze tohle<br><br>class A {<br><br>private $ahoj = 'ahoj1';<br>protected function show() {<br> echo $this-&gt;ahoj;<br>}<br>}<br>class B extends A{<br>public function show() {<br>parent::show();<br>echo "Ahoj";<br>}<br>}<br><br>$p = new B();<br>$p-&gt;show();error414http://www.error414.comnoreply@blogger.com