Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [OO] Obiekt lokalny i ob_start
Forum PHP.pl > Forum > PHP
jaco
Mam dwa problemy, tytul moze troche kontrowersyjny winksmiley.jpg

1. Zaczynam tak
[php:1:6ba17c14d6]<?php
$engine = new engine;
?>[/php:1:6ba17c14d6]

Nastepnie w jeden z funkcji (nie metodzie, nie innej klasie) pisze:
[php:1:6ba17c14d6]<?php
echo $engine->conf['theme'];
?>[/php:1:6ba17c14d6]

I to niestety nie dziala jednakze dziala kod taki:
[php:1:6ba17c14d6]<?php
echo $GLOBALS['engine']->conf['theme'];
?>[/php:1:6ba17c14d6]

To wyglada tragicznie i zabardzo mi sie nie podoba - jest jakies rozwiazanie, czy jezeli owa funkcja bedzie metoda innej klasy bede mogl sie bezposrednio odwolac do obiektu $engine?

2.
[php:1:6ba17c14d6]<?php
ob_start($engine->filter);
?>[/php:1:6ba17c14d6]

No comments - nie dziala :/ Zreszta
[php:1:6ba17c14d6]<?php
ob_start('engine::filter');
?>[/php:1:6ba17c14d6]

Tez nie - wczesniej gdy funckja filter() byla poza klasa engine argument w postaci 'filter' dzialal!
DeyV
w komentarzach do manuala dla funkcji [manual:de7a1e8862]ob_start() [/manual:de7a1e8862](warto je czytać - a jakże) napisano:
Cytat
If you're using object-orientated code in php you may, like me, want to use a call-back function that is inside an object (i.e. a class function). In this case you send ob_start a two-element array as its single argument. The first element is the name of the object (without the $ at the start), and the second is the function to call. So to use a function 'indent' in an object called '$template' you would use [php:1:de7a1e8862]<?php  
ob_start(array('template', 'indent'));  
?>[/php:1:de7a1e8862]
.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.