![]() |
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 06:17 |