Autor Zpráva
PHP_Nemaster
Profil
Dobrý den,
začal jsem se pokoušet o objektové programování, ale nechápu jednu věc:

Co přesně je objekt? Je to třída, metoda, nebo proměnná?

    class A {

         public function Text( $text ) {

             echo $this->text;

         }

     }

     $a = new A();
    $a->Text('Ahoj');

Hlásí to chybu "Undefined property A::$text". Prý se dá $this použít pouze v objektovém kontextu, co je teda ten objekt?

    class A {

         public function Text( $text ) {

             $this->text = $text;
                        echo $this->text;
 
         }

     }

     $a = new A();
    $a->Text('Ahoj');

Ale tohle už funguje. Můžete mi prosím objasnit, kdy se dá použít to $this?

Předem děkuji za odpověd'
YaD
Profil
Je to síce o Jave, ale koncepty sú isté:
http://java.mrazovci.eu/sk/node/118
PHP_Nemaster
Profil
Ano, já jsem hledal i na PHP.net, ale potřebuji jenom vědět, jestli objekt = třída a kdy se dá použít $this.
Nox
Profil
PHP_Nemaster:
ne

objekt je instance třídy ... třída je "předpis," jak udělat konkrétní objekt

$this se dá použít kdekoli* v metodách, kromě statických metod

v kódu č.1 ti chybí definice vlastnosti $text, tzn. má tam být
class A {
   public /* nebo protected nebo private */ $text;
   
    // ...

 }

jinak nevim co ta funkce má dělat, když atribut text má dostat a zároveň ho vypisuje, ale má ho mít ještě jako členskou proměnnou, ale nevadí

jinak č.2 - metody (funkce v třídě) mají obvykle na začátku malé písmeno, tzn. camelCase (a objekty PascalCase, tzn. první velké a další slova bez _ a velkým)

*) samozřejmě kromě zanořených funkcí a anonymních funkcí
PHP_Nemaster
Profil
Děkuji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0