Prechod z Nette 2 PHP 5.3 na PHP 5.2
- pseudonym
- Člen | 57
Ahojte, stala sa mi úžasná vec.
Aplikáciu, ktorú som vyvíjal v Nette pre PHP 5.3 som nahral na firemný
server a zistil som, že na ňom je PHP verzie 5.2.9.
Nahral som tam Nette pre verziu 5.2.x, Nette sa mi podarilo rozbehať, ale
všetky triedy, ktoré som napísal, resp. ktoré som prebral z Sandboxu a sú
v zložke app
používajú namespace, ktoré je podporované až
od verzie 5.3.0.
Viete mi, prosím, v skratke niekto napísať, ako mám prepísať triedy tak, aby pracovali na verzii PHP 5.2.9?
Prvá trieda, ktorá nabehne je napr. model:
<?php
use Nette\Database\Connection,
Nette\Database\Table\Selection;
class ApartmentFlags extends Selection
{
public function __construct(\Nette\Database\Connection $connection)
{
parent::__construct('apartmentFlag', $connection);
}
}
Skúsil som vymazať konštrukciu use
a vyhodilo zvláštnu
chybu, tak som skúsil ešte to Selection
prepísať
\Nette\Database\Table\Selection
a to mi vypísalo nasledovnú
hlášku:
Parse Error
syntax error, unexpected T_STRING, expecting '{'
Viete mi, prosím, niekto poradiť? Za každú radu budem veľmi vďačný.
PS: Skúšal som to aj hľadať, našiel som napr. túto tému, ale veľmi mi to nepomohlo, resp. neviem čo s tým ďalej.
Editoval pseudonym (24. 5. 2012 11:23)
- pseudonym
- Člen | 57
Používam neprefixovanú verziu.
Malo by to tým pádom byť takto:
class ApartmentFlags extends Selection
{
public function __construct(Connection $connection)
{
parent::__construct('apartmentFlag', $connection);
}
}
Vypíše to Fatal Error: Class 'Selection' not found.
:
1: <?php
2:
3: class ApartmentFlags extends Selection
4: {
5: public function __construct(Connection $connection)
6: {
7: parent::__construct('apartmentFlag', $connection);
8: }
9: }
10:
Editoval pseudonym (24. 5. 2012 12:22)
- llsm
- Člen | 121
Kdyz si stahnes balicek
nette pro php 5.3, tak v nem ve slozce \tools\Code-Migration
je nekolik souboru, ktere se pouzivaji pri updatu nette z PHP 5.2 na 5.3. To
znamena, ze kdyz si projdes jejich kod, tak v nem najdes seznam zmen nazvu
trid. To by ti mohlo trochu zjednodusit praci s hledanim…
Napr: 'tableselection' => 'Nette\Database\Table\Selection'
,
z toho vidis, Selection se ve verzi pro php 5.2 jmenovala TableSelection.
Doporucuji stahnout balicek, ktery odpovidal verzi nette, na ktere jsi svuj
projekt psal.
Editoval llsm (24. 5. 2012 13:14)
- pseudonym
- Člen | 57
Pozeral som to, snažil som sa, ale je to nad moje sily. Treba tam veľmi veľa vecí upravovať a podobne. Radšej som sa s providerom dohodol tak, že to zatiaľ dajú na nejaký iný server. Plánujú v dohľadnej dobe prechod na 5.3.0
Inak nezávidím ľuďom, ktorí toto musia riešiť. Ja som sa snažil, ale bolo to dosť husté.
Ďakujem všetkým za pomoc.
- jtousek
- Člen | 951
U zákazníků kteří z nějakého důvodu nechtějí hosting na mém serveru (těch je bohudík minimum :)) si vždy ze všeho nejdříve zjišťuji konfiguraci cílového serveru. Pokud zjistím nějaký nedostatek (typicky PHP < 5.3), rovnou upozorním zákazníka že by měl buď zařídit aktualizaci / úpravu konfigurace, vybrat jiný hosting nebo že to bude mít určitý vliv na cenu (upravovat stávající systém pro starší verzi dá trochu práce, v případě nové zakázky je používání starší verze nepříjemná komplikace). Většina si to rozmyslí, protože platit více se nikomu nechce. :-)