Prechod z Nette 2 PHP 5.3 na PHP 5.2

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
pseudonym
Člen | 57
+
0
-

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)

jtousek
Člen | 951
+
0
-

Pro prefixovanou verzi Nette by to mělo být takhle:

class ApartmentFlags extends NSelection
{
    public function __construct(NConnection $connection)
    {
        parent::__construct('apartmentFlag', $connection);
    }
}
pseudonym
Člen | 57
+
0
-

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)

jtousek
Člen | 951
+
0
-

Aha, ono se to totiž v té verzi pro 5.2 jmenuje TableSelection. Obecně když to nebude moct najít nějakou třídu tak si otevři soubor kde by měla být a přečti si jméno.

llsm
Člen | 121
+
0
-

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
+
0
-

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.

JuniorJR
Člen | 181
+
0
-

Alespoň se příště budeš dřívě zajímat o prostředí, pro které píšeš… :)

jtousek
Člen | 951
+
0
-

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. :-)