sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #81514
Re: Hvordan laves PHP-kode som kører under både PHP4 og PHP5 eller kan Apache køre med både PHP4 og PHP5?
Lars Riisgaard Ribe <lars@xxxxxxxxxxxxxxxx> writes:
> det eneste problem, jeg har oplevet, at objekters variable under PHP4
> hedder "var", mens ekvivalensen under PHP5 er "public".
Er du sikker på at det er et problem?
Jeg har selv været med til at få et større php projekt (TYPO3) til at køre
under PHP5, og det med var deklarationen er ikke et problem.
Det eneste problem vi havde med det var at PHP4 accepterede
re-dekalration af variable i klasser, og det gør PHP5 ikke. Men det er
jo under alle omstændigheder en fejl.
Det er muligt at PHP5 giver dig en notice om det, men det betyder ikke
at det ikke fungerer.
Hvis det er det der er problemet kan du evt. slå E_NOTICE fra, under
alle omstændigheder bør du skrive fejlmeddelelser fra PHP i en log-fil
istedet for ud i browseren.
> Jeg synes selv, jeg har to muligheder: enten får jeg koden til at
> virke under både PHP4 og PHP5, eller også får jeg min server til både
> at fortolke PHP4 og PHP5.
Det burde være ret nemt at få det til at fungere under begge dele, der
er meget få inkompatible ændringer i PHP5.
Det mest kritiske er nok hvis du har udnyttet PHP4's besynderlige
objekt-håndtering, altså at den ikke referer, men kopierer objekterne.
Så vil din kode sikkert opføre sig meget mærkeligt. Men der findes et
direktiv man kan slå til i php.ini
> 1) Er der nogen som helst måde, man kan få PHP5-fortolkeren til at
> acceptere PHP4-objekter?
Ja, se ovenfor.
> 2) Som C-programmør, ville jeg have gjort noget med #ifdef
> ... #endif. Findes der noget tilsvarende under PHP? Altså noget
> preprocessor?
Nej, eftersom PHP ikke bliver kompileret, men fortolket. Det er muligt
at nogen af acceleratorerne tilbyder sådan en funktionalitet.
> 3) Jeg kan ikke opgradere PHP4 på serveren, da der kører en del
> gammelt kode på den, men jeg ville være meget interesseret i, at nogle
> sites på serveren kørte PHP5. Kan man det? Også uden at skulle lave
> extensions med .php5 eller køre på port 8080 (som er de eneste to
> løsninger, jeg har kunnet finde på Google). Det fedeste ville være at
> kunne gøre det pr. virtual host.
Desværre kan PHP5 og PHP4 ikke køre under samme webserver. Så din
eneste løsning skulle være at køre to webservere med forskellige dokument-rod.
> 4) Er der en hel anden mulighed, som jeg har overset? Filerne bliver
> trukket ind og ud med cvs - kan man evt. bare lave en sed, der pløjer
> det hele igennem og erstatter "var" med "public" og vice versa på en
> fuldautomatisk måde?
Jeg tror ikke at det er en god ide automatisk at opdatere koden på den
måde..
> Håber nogen har nogle guldkorn, de vil dele ud af :-)
Ved ikke om det var guldkorn, men lidt erfaring var det i hvert
fald. Se iøvrigt: http://zend.com/php5/migration.php
--
- Christian Jul Jensen
References