[PHP OOP] - Jak odwołać się do zmiennej, która siedzi w klasie?


(jacko1998) #1

Witam, mam pytanie. Mianowicie jak można się odwołać do publicznej zmiennej, która siedzi w klasie ? Do metody odwołuje się tak:

<?php
$zmienna = new Klasa();
$zmienna->metoda();
?>

No to tak próbowałem, jeżeli chodzi o odwołanie się do zmiennej:

<?php
$zmienna = new Klasa();
$zmienna->$liczba;
?>

lub:

<?php
$zmienna = new Klasa();
$zmienna->liczba;
?>

Ale nie pomogło. Pomoże ktoś ?


(system) #2

Witam,

 

 

do klasy, czy do obiektu?

Ogólna zasada jest taka, że muszą być publiczne.

Następnie jeśli to ‘zmienna’ obiektu, to odwołujesz się poprzez nazwę obiektu i tzw. wyłuskanie (->) oraz nazwa zmiennej bez dolara, czyli np. $obiekt->zmienna.

Natomiast jeśli to ‘zmienna’ statyczna, czyli klasy, to odwołujesz się przez nazwę klasy (nie obiektu) i operator klasowy ( :: ) oraz nazwa ‘zmiennej’ z dolarem, czyli np. Klasa->$zmienna;

 

 

Jeśli do klasy, to rozumiem, że jest ta ‘zmienna’  statyczna? Jeśli tak, to wtedy robisz tak:

class Klasa
{
  static public $zmienna = 0 ;
}

Klasa::$zmienna = 0;
echo Klasa::$zmienna;

Natomiast jeśli jako zmienna obiektowa, to możliwe, że pominąłeś dać jako public, czyli np.:

class Klasa
{
   public $zmienna = 0;
}

$obiekt = new Klasa();
$obiekt->zmienna = 2;
echo $klasa->zmienna;

Możesz mieć nawet 2 takie rodzaje ‘zmiennych’: obiektowe i klasowe:

class Klasa
{
   static public $statyczna = 0;
   public $zmienna = 0;
}

$obiekt = new Klasa();
$obiekt->zmienna = 2; //odwołanie do 'zmiennej' obiektu
Klasa::$statyczna = 2; // odwołanie do 'zmiennej' klasy
echo 'zmienna obiektu: '. $obiekt->zmienna;
echo 'zmienna klasy: '.Klasa::$statyczna;

Z tym, że musisz pamiętać, ze te ‘zmienne’ klasy tyczą się nie obiektu a klasy i mogą np. spełniać rolę liczników stworzonych obiektów.

 

 

Zauważ, że pisze ‘zmienne’ w apostrofach, bo w obiektach są to pola nie zmienne ;p.

 

Zapraszam na mój profil blogowy, gdzie możesz zobaczyć kod klas/obiektów, z użyciem takich pól (zmiennych).


(jacko1998) #3

Wyskakuje mi błąd, że obiekt klasy nie może zostać przekonwertowany do stringa. Wie Pan o co biega ?

Kod:

$lala = new registration();
$lala->add = 'alkaka';
echo $lala;

(kostek135) #4

Może na początek powinieneś się zapoznać z konceptem PO? Tu masz całkiem dobry artykuł. http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep


(pain3hp) #5

A wiesz co zrobiłeś? Przecież zrobiłeś obiekt $lala i chcesz go wyechować (czyli skonwertować do stringa).

 

Jeżeli chcesz wyświetlić tę właściwość $lala->add to zrób to: echo $lala->add;


(Jim1961) #6

@autor

pierwszy dzień w branży? :smiley:

 

 

W przypadku PHP jest jedno miejsce, które trzeba dodać do zakładek: http://www.php.net/manual

Przeglądnij http://www.php.net/manual/en/language.oop5.basic.php a najlepiej też pozostałe z bocznego menu.