Dobrý deň, hľadám pár užitočných inofrmácií k OOP v PHP.
Mám stránku rozdelenú na menšie podstránky. Na začiatku index.php súboru si vytvorím Objekt. Objekt pracuje správne pokiaľ ho používam len v index.php. Ale akonáhle vytvorím súbor test.php a pomocou require_once ho zahrniem do index.php, tak Objekt v súbore test.php prestane fungovať a vypisuje mi to hlásenie, že je null.
Nutne potrebujem zistiť ako tento problém vyriešiť. S OOP mám skúsenosti z Java. Ale vyzerá to byť čiastočne odlišné...
Ďakujem za každú pomoc a vysvetlenie ako správne s objektom pracovať.
Fórum › PHP
Používanie objektu
#1 Patrik
Obvyklý postup je, že do externího souboru se píše pouze třída, ale objekt se vytváří ve volajícím skriptu.
Je docela důležité, aby se soubor s třídou jmenoval stejně jako třída plus přípona ".php". Ostatně to znáš z Javy.
Áno to som spravil. Mám súbor kde je class. A potom až v indexe požijem O = new O();
Lenže ja potrebujem docieliť to, že ten Objekt inicializujem na začiatku a potom už len v daných častiach použíjem jeho jednu funkciu. No v tých nasledujúcich častiach mi to vypisuje null.
Prosím Vás, aká je "životnosť" toho objektu? Vytvorím si Objekt na začiatku index-u a môžem ho použiť len v ňom, a ešte jednom vloženom súbore. Akonáhle ten vložený súbor vkladá ďalšie, tak objekt prestáva existovať a už ho nemôžem ďalej používať. Je to normálne?
Ostalo mi len znovu vytvoriť ten istý objekt vo vloženom-vloženom súbore. Ale to nebude správna voľba predpokladám.
#7 Patrik
Životnost objektu je tak dlouho, dokud na něj existuje nějaký odkaz. Stejně jako v Javě. Možná jen zapomínáš ten objekt předávat dalším objektům, které s ním mají pracovat.
Hmm, práveže je to len Objekt, ktorý je definovaný v indexe a za úlohu má zatiaľ len vrátiť string z array podľa požadovaného indexu.
Skúsim to naznačiť:
index.php
<?php
require_once 'Day.php';
$day = new Day();
require_once 'including.php' //súbor, ktorý rozhoduje čo sa má ďalej vložiť
?>
including.php
<?php
//pre zjednodušenie
//inak tam je pár if-ov a v každom nejaký require_once
//tu ešte práca s $day išla
require_once 'vypis.php'
?>
vypis.php
<?php
echo $day->nameOfDay(0); //dajme tomu že očakávaný výpis je 'Pondelok'
?>
No vypíše error: Uncaught Error: Call to a member function nameOfDay() on null
Čo robím zle?
To by ti logicky fungovat nemelo. Aspon ne s require.
index <- including <- vypis
Vypis chce pouzit neco, co ve vypis neexistuje.
Require dela to, ze da do pameti cast kodu, na kterou se pak odkazuje. To, co je v require nedokaze pracovat s vnejkem. Muzes zkusit pridat do vypis a mozna i including
global $day;
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Používanie vytvorenej knižnice v inom projekte — založil robo
Spravovanie git repozitára: používanie SSH keys — založil tomas.teicher
Získávání sub objektů z objektu — založil Beepvix
Kopírování objektu — založil Peet
Moderátoři diskuze