Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 17.10.2007 Ostrzeżenie: (0%)
|
Chciałbym, żeby w klasie tworzone były dynamiczne zmienne w przypadku gdy inna klasa odwołuje się do nieistniejącego pola. Np
W powyższym przypadku chciałbym żeby zostało utworzone automatycznie pole "title". |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%)
|
Cytat Chciałbym, żeby w klasie tworzone były dynamiczne zmienne w przypadku gdy inna klasa odwołuje się do nieistniejącego pola. Np I. Język PHP jest językiem interpretowanym, nie musisz definiować/deklarować zmiennych przed ich użyciem. Chodzi o to że np. nie musisz deklarować chęci utworzenia zmiennej np. $zminna = 'cos'; // nic nie deklarujesz że chcesz taką zmienną, od razu piszesz jaką ma mieć wartość natomiast w przypadku struktur które mają wiele poziomów nie musisz deklarować ostatniej zmiennej. np. w przypadku $obiekt1-> obiekt2->nowa_zmienna obiekt 1 i obiekt2 muszą istnieć, ale nowa_zmienna "istnieć" już nie musi II. Lepszym rozwiązaniem wydaje mi się stworzenie w klasie A, właściwości klasy (ty nazywasz to chyba "polem") typu tablicowego która przechowywała by wszystkie "dynamicznie" utworzone zmienne Tutaj zrobiłem taki przykład według mnie spełniający twoje wymagania: Kod class A { public function __get ($var) { if (isset($this->$var)) { return $this->$var; } else { echo "Zmienna '$var' nie istnieje"; } } public function doSomething () { echo $this->title; } public function doSomething2 () { echo $this->title . ' v 2.0'; } } class B { public $object; public function __construct () { $this->object = new A(); $this->object->title = 'Strona glowna'; $this->object->doSomething(); } } $objB = new B(); echo "<br>"; $objB->object->doSomething2(); echo "<br>"; echo $objB->object->zmienna_ktora_nie_istnieje; PS. być może czegoś nie zrozumiałem, jeżeli tak, proszę o oświecenie mnie. |
|
|
|
rudolf35 Dynamiczne tworzenie pól w klasie 6.03.2010, 11:26:15
erix __set i __get 6.03.2010, 11:31:16
rudolf35 ok, dzięki set przechwytuje próbę zapisania w niei... 6.03.2010, 14:53:54
erix A druga przeze mnie wymieniona funkcja, to? 6.03.2010, 15:10:57
gothye na jakich prawach tworzone jest dzieki temu pole ,... 6.03.2010, 15:29:03
rudolf35 [PHP] pobierz, plaintext class A{ public fu... 6.03.2010, 16:03:58
-=Peter=- [PHP] pobierz, plaintext class A{ public fun... 9.03.2010, 01:29:38
gothye poprawiony powyższy kod :
[PHP] pobierz, plaintex... 13.03.2010, 09:35:29
zend Mam wrażenie że większość z was podaje przykładu k... 28.03.2010, 21:52:28 ![]() ![]() |
|
Aktualny czas: 11.06.2026 - 02:35 |