referencja do nazwy funkcji
Iceman - 05-09-2006 05:18
witam
szukalem juz na google i w archiwach Google Groups i widzialem ze ktos juz zadawal to pytanie ale odpowiedzi nie bylo. a chodzi o referencje do nazwy funkcji (jezeli dziala to inaczej w klasie to chodzi mi o klase) dla php4 (bo takie mam na serwerze)
przyklad
class A { var $c;
function A () { $this->C = new B; } }
zalozmy ze w klasie B jest funkcja o nazwe function_b i gdybym chcial sie do niej odwolac poza klasa A wygladaloby to mniej wiecej tak
$nowy = new A; $nowy->C->function_b($parametr);
co jak widac jest dosyc uciazliwe i wolalbym zeby wygladalo to tak $nowy = new A; $nowy->nazwa_referencji_do_function_b($parametr)
nie wiem czy dosyc jasno to wytlumaczylem ale gdyby ktos zrozumial moja zagmatwana wypowiedz i wiedzial jak to zrobic to prosze smialo pisac :-)
pozdrawiam Iceman
Jacek Karczmarczyk - 05-09-2006 05:18
Dnia Sun, 03 Sep 2006 23:14:47 +0200, Iceman napisał(a):
> class A > { > var $c; > > function A () > { > $this->C = new B; > } > } > > zalozmy ze w klasie B jest funkcja o nazwe function_b > i gdybym chcial sie do niej odwolac poza klasa A wygladaloby to mniej wiecej > tak > > $nowy = new A; > $nowy->C->function_b($parametr); > > co jak widac jest dosyc uciazliwe i wolalbym zeby wygladalo to tak > $nowy = new A; > $nowy->nazwa_referencji_do_function_b($parametr)
class A { function A() { ... } function nazwa_referencji_do_function_b($parametr) { $this->C->function_b($parametr); } } ewentualnie w PHP5 możesz skorzystać z __call i odwoływać się po prostu
$nowy->function_b();
-- Jacek Karczmarczyk "Podoba mi sie to, co panowie mowia, ze sie podoba..." / Rejs
[ http://larch.nazwa.pl ]
Iceman - 05-09-2006 05:18
Jacek Karczmarczyk wrote:
> Dnia Sun, 03 Sep 2006 23:14:47 +0200, Iceman napisał(a): > > > class A { > function A() { ... } > function nazwa_referencji_do_function_b($parametr) > { > $this->C->function_b($parametr); > } > } > ewentualnie w PHP5 możesz skorzystać z __call i odwoływać się po prostu > > $nowy->function_b(); >
dzieki za odpowiedz ale tak jak pisalem na serwerze mam php4 czyli __call i sposoby z php5 nic mi nie daja a sposob ktory podales (co prawda uzywalem go wczesniej wiele razy no ale wlasnie nie o to mi chodzi) nie wiele ma wspolnego z referencja ale mimo wszystko dziekuje
pozdrawiam Iceman
Jacek Karczmarczyk - 05-09-2006 05:18
Dnia Mon, 04 Sep 2006 09:45:20 +0200, Iceman napisał(a): > dzieki za odpowiedz ale tak jak pisalem na serwerze mam php4 czyli __call i > sposoby z php5 nic mi nie daja a sposob ktory podales (co prawda uzywalem > go wczesniej wiele razy no ale wlasnie nie o to mi chodzi) nie wiele ma > wspolnego z referencja ale mimo wszystko dziekuje
nie wydaje mi się, żeby dało się to jakoś inaczej zrobić
-- Jacek Karczmarczyk "Podoba mi sie to, co panowie mowia, ze sie podoba..." / Rejs
[ http://larch.nazwa.pl ]
Iceman - 05-09-2006 05:18
Jacek Karczmarczyk wrote:
> Dnia Mon, 04 Sep 2006 09:45:20 +0200, Iceman napisał(a): >> dzieki za odpowiedz ale tak jak pisalem na serwerze mam php4 czyli __call >> i sposoby z php5 nic mi nie daja a sposob ktory podales (co prawda >> uzywalem go wczesniej wiele razy no ale wlasnie nie o to mi chodzi) nie >> wiele ma wspolnego z referencja ale mimo wszystko dziekuje > > nie wydaje mi się, żeby dało się to jakoś inaczej zrobić >
w takim razie troche inne pytanie :-) jezeli na obecnym serwerze mam php4 i pod taki pisze skrypty a znalazlbym serwer z php4/php5 to czy:
1. istnieje cos na ksztalt 'dyrektyw prekompilatora' (ps. widze roznice pomiedzy c,c++ i php czy perl'em - to zeby ktos nie posadzil mnie o ignorancje i glupote) czyli pisze sobie skrypt i wstawiam odpowiednie 'dyrektywy' w zaleznosci od tego jaki bedzie na serwerze parser a w srodku odpowiednie funkcje/metody dla php4 i php5? chodzi o to zebym nie musial pisac osobnych skryptow... 2. jezeli na serwerze jest php4 i php5 to zazwyczaj jest tak ze .php czy .php4 sa parsowane przez php4 a .php5 przez php5. czy moge wowczas stworzyc tylko 2 pliki index.php (parsowany przez php4) i index.php5 (parsowany przez php5) bez zmian w plikach dodawanych za pomoca 'include', 'include_once', 'require', 'require_once'? jezeli tak to jakie wowczas powinno byc rozszerzenie takich plikow - .php,.php4,.php5? 3. trzecie i juz ostatnie :-) jezeli skrytp zaczyna byc parsowany przez, np. php5, to pomimo uzycia 'include', 'require' i plikow .php to parser sie wowczas nie przestawia na php4...?
pozdrawiam Iceman
Jacek Karczmarczyk - 05-09-2006 05:18
Dnia Mon, 04 Sep 2006 13:51:17 +0200, Iceman napisał(a):
> 1. istnieje cos na ksztalt 'dyrektyw prekompilatora' (ps. widze roznice > pomiedzy c,c++ i php czy perl'em - to zeby ktos nie posadzil mnie o > ignorancje i glupote) czyli pisze sobie skrypt i wstawiam > odpowiednie 'dyrektywy' w zaleznosci od tego jaki bedzie na serwerze parser > a w srodku odpowiednie funkcje/metody dla php4 i php5? chodzi o to zebym > nie musial pisac osobnych skryptow...
nie wiem czy dobrze zrozumiałem (przepraszam, jeszcze nie piłem dzisiaj), ale może to pomoże
http://pl.php.net/phpversion
> pomoca 'include', 'include_once', 'require', 'require_once'? jezeli tak to > jakie wowczas powinno byc rozszerzenie takich plikow - .php,.php4,.php5?
to zależy od ustawień serwera
> 3. trzecie i juz ostatnie :-) jezeli skrytp zaczyna byc parsowany przez, np. > php5, to pomimo uzycia 'include', 'require' i plikow .php to parser sie > wowczas nie przestawia na php4...?
nie
-- Jacek Karczmarczyk "Podoba mi sie to, co panowie mowia, ze sie podoba..." / Rejs
[ http://larch.nazwa.pl ]
Jacek Karczmarczyk - 05-09-2006 05:18
Dnia Mon, 4 Sep 2006 13:59:37 +0200, Jacek Karczmarczyk napisał(a): >> pomoca 'include', 'include_once', 'require', 'require_once'? jezeli tak to >> jakie wowczas powinno byc rozszerzenie takich plikow - .php,.php4,.php5? > > to zależy od ustawień serwera
a konkretnie rozszerzenie pliku "glownego" jest wazne, to co includujesz moze miec rozszerzenie .dupa
-- Jacek Karczmarczyk "Podoba mi sie to, co panowie mowia, ze sie podoba..." / Rejs
[ http://larch.nazwa.pl ]
sg - 05-09-2006 05:18
Jacek Karczmarczyk napisał(a): > Dnia Mon, 4 Sep 2006 13:59:37 +0200, Jacek Karczmarczyk napisał(a): >>> pomoca 'include', 'include_once', 'require', 'require_once'? jezeli tak to >>> jakie wowczas powinno byc rozszerzenie takich plikow - .php,.php4,.php5? >> to zależy od ustawień serwera > > a konkretnie rozszerzenie pliku "glownego" jest wazne, to co includujesz > moze miec rozszerzenie .dupa >
no niby tak, ale wtedy jest ten problem, że wpisanie http://blebleble/cos.dupa wyświetli cały plik
Iceman - 05-09-2006 05:18
dzieki za odpowiedz a w pierwszym pytaniu chodzilo mi raczej o cos takiego
class A {
#if_php_version==5 function __construct(...) { // tresc metody } #endif #if_php_version==4 function A (...) { // tresc metody dla php4 } #endif
}
Jacek Karczmarczyk - 05-09-2006 05:18
Dnia Mon, 04 Sep 2006 14:15:05 +0200, Iceman napisał(a):
> class A > { > > #if_php_version==5 > function __construct(...) > { > // tresc metody > } > #endif > #if_php_version==4 > function A (...) > { > // tresc metody dla php4 > } > #endif > > }
obawiam się, że tak się nie da
-- Jacek Karczmarczyk "Podoba mi sie to, co panowie mowia, ze sie podoba..." / Rejs
[ http://larch.nazwa.pl ]
Jacek Karczmarczyk - 05-09-2006 05:18
Dnia Mon, 04 Sep 2006 14:07:47 +0200, sg napisał(a):
>> a konkretnie rozszerzenie pliku "glownego" jest wazne, to co includujesz >> moze miec rozszerzenie .dupa > > no niby tak, ale wtedy jest ten problem, że wpisanie > http://blebleble/cos.dupa wyświetli cały plik
Fakt, ale ograniczyłem się tylko do wpływu rozszerzenia na includowanie Poza tym można w apachu/.htaccess dać, żeby .dupy były parsowane jako php, albo w ogóle deny all
-- Jacek Karczmarczyk "Podoba mi sie to, co panowie mowia, ze sie podoba..." / Rejs
[ http://larch.nazwa.pl ]
NukeDMAn - 05-09-2006 05:18
Iceman napisał(a): > dzieki za odpowiedz a w pierwszym pytaniu chodzilo mi raczej o cos takiego > > class A > { > > #if_php_version==5 > function __construct(...) > { > // tresc metody > } > #endif > #if_php_version==4 > function A (...) > { > // tresc metody dla php4 > } > #endif > > }
tak jak napisales nie zadziala, ALE :)
dla konkretnego twojego przypadku, mozna by zrobic tak:
class A { function A { $this->__construct('php4'); } function __construct($phpver = 'php5') { echo $phpver; } }
i wtedy np. $a = new A;
i drugi sposob:
class A { function A { $this->konstruktor(); } function __construct() { $this->konstruktor(); } function konstruktor() { if(function_exist('jakas_funkcja_tylko_w_php5')) { $phpver = 5; } else { $phpver = '<5'; // bo np. w php3 tez nie ma } echo $phpver; } }
ale to tak tylko :) bo jak uzyjesz juz po tym IFie z wersja jakiejs funckji z php5 a wrzucisz parser 4, to i tak wyrzuci blad z nieistniejaca funkcja (chyba).
-- Pozdrawiam, NukeDMAn => [http://www.nukedman.prv.pl]
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Photoshop CS2 - funkcje, =?ISO-8859-2?Q?kt=F3rych_si=EA_nie_?==?ISO-8859-2?Q?spodziewasz=2E=2E=2E?=
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
postgres - ile razy wykona =?ISO-8859-2?Q?si=EA_funkcja_w_?==?ISO-8859-2?Q?zapytaniu?=
[MySQL] Load data infile i =?ISO-8859-2?Q?u=BFycie_funkcji_r?==?ISO-8859-2?Q?eplace?=
[PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?=
Problem z funkcja mysql_real_escape_string() na bazie mysql
=?iso-8859-2?q?Sybase_jak_wyci=B1gn=B1=E6_dane_generowane_prz ez_funkcje?=
=?iso-8859-2?q?[Mysql_5=2E0]_Wywo=B3ywanie_procedury_jako_parametr_funkcji?=
zanotowane.pldoc.pisz.plpdf.pisz.plmarcelq.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|