Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Klasy - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Początkujący webmaster (https://www.webmastertalk.pl/forum-poczatkujacy-webmaster)
+--- Wątek: Klasy (/thread-klasy)

Strony: 1 2 3


Klasy - xtronix856 - 25-09-2012

Co tu trzeba dopisac , żeby funkcja __get(); wyświetliła wartość. Dla __set(); jest chyba dobrze, nie ?

Kod:
class nazwaklasy
{
    public $atrybut;
    function __get($nazwa)
    {
        return $this->$nazwa;
    }
    function __set($nazwa, $wartosc)
    {
        $this->$nazwa = $wartosc;
    }
}

$a = new nazwaklasy();
echo $a->$atrybut = 5;
$a->$atrybut;



RE: Klasy - Pedro84 - 25-09-2012

Oj, chopie...

Co to jest $atrybut? Jak chcesz ustawić atrybut klasy za pomocą magicznej metody __set(), albo go pobrać za pomocą __get() to musisz podać jego nazwę, a nie jakąś zmienną. Skąd Ty ją w ogóle wziąłeś?

A tak w ogóle to masz namieszane coś z wyświetlaniem błędów, bo interpreter powinien Ci wyrypać błąd o niezdefiniowanej zmiennej.


RE: Klasy - Radian - 25-09-2012

czyli:

public $atrybut;
function __get()
{
return $this->$atrybut;
}

a jak set to:

$this->$atrybut = $zmienna;


RE: Klasy - Pedro84 - 25-09-2012

(25-09-2012, 17:43)Radian napisał(a): ciach
Też nie, bo robisz ten sam błąd:

Gościu ma tak:
Kod:
$a = new nazwaklasy();
echo $a->$atrybut = 5;
$a->$atrybut;

a bez zdefiniowania zmiennej atrybut powinien mieć tak:
Kod:
$a = new nazwaklasy();
$a->atrybut = 5;
echo $a->atrybut



RE: Klasy - xtronix856 - 26-09-2012

W takiej postaci zmienna atrybut sie wyswietla czy co to tam jest..

Kod:
class nazwaklasy
{
    public $atrybut;
    
    function __set($nazwa, $wartosc)
    {
        $this->$nazwa = $wartosc;
    }
}

$a = new nazwaklasy();
echo $a->$atrybut = 5;



RE: Klasy - Pedro84 - 26-09-2012

Przyjacielu,

kod:
Kod:
<?php

class nazwaklasy
{
    public $atrybut;
    
    function __set($nazwa, $wartosc)
    {
        $this->$nazwa = $wartosc;
    }
}

$a = new nazwaklasy();
echo $a->$atrybut = 5;
zwraca dokładnie:
Kod:
( ! ) Notice: Undefined variable: atrybut in /var/www/class.php on line 14
Call Stack
#    Time    Memory    Function    Location
1    0.0003    127344    {main}( )    ../class.php:0

( ! ) Fatal error: Cannot access empty property in /var/www/class.php on line 9
Call Stack
#    Time    Memory    Function    Location
1    0.0003    127344    {main}( )    ../class.php:0
2    0.0008    127704    nazwaklasy->__set( )    ../class.php:14

a spróbuj tak:
Kod:
$a = new nazwaklasy();
$a->atrybut = 5;
$a->atrybut
zwróci Ci ładnie 5.

Poczytaj sobie od razu:
http://php.net/manual/en/language.oop5.overloading.php
http://php.net/manual/en/language.oop5.magic.php
http://php.net/manual/en/language.oop5.overloading.php#object.set

Dodatkowo, takie coś Ci nie zadziała
Kod:
$a = $obj->b = 8;
, bo obiekty w PHP są przekazywane przez referencję.

Zanim zaczniesz podstawy z OOP, poznaj najpierw podstawy języka, bo masz słabo z nimi stoisz Smile Bez złośliwości, unikniesz złości i irytacji.


RE: Klasy - xtronix856 - 26-09-2012

To ja nie rozumiem jakim cudem u mnie nie ma błędów!? xD Ja własnie jade od podstaw z tym wraz z kursem... =p


RE: Klasy - Pedro84 - 26-09-2012

Bo masz wyłączone wyświetlanie błędów w php.ini.


RE: Klasy - xtronix856 - 26-09-2012

Ale wynik tez niby zwraca dobry... =p


RE: Klasy - hieroshima - 29-09-2012

(26-09-2012, 05:00)xtronix856 napisał(a): Ale wynik tez niby zwraca dobry... =p

I to jest najgorsze. Robisz coś źle, a wynik masz dobry. 100% gwarancji na posypanie całej aplikacji + wiele godzin szukania błędów Big Grin