ugrás a tartalomhoz

PHP keretrendszer névterek nélkül?

Crystal · 2011. Szep. 3. (Szo), 12.18
Sziasztok,

az a problémám, hogy van egy fejlesztés alatt álló PHP keretrendszerem, és nem tudom eldönteni, hogy használjak-e benne névtereket, vagy rendben van a Nagyon_Hosszú_Osztály_Név. Jelenleg nincsenek névterek, és nekem teljesen megfelel így is, viszont pár hónapon belül szeretném publikálni a rendszert, és nem tudom, hogy másoknak mi lenne a jó. Már több ismerőst megkérdeztem, de igazából ők se tudtak választ adni, ezért gondoltam, hogy nyitok itt egy fórumtémát.

Ami a névterek mellett szól, hogy minden új keretrendszer használja, így lassan már standardnak tekinthető.

Ami ellene szól:
  • mivel a java-hoz hasonló névtér-szintű láthatóság PHP-ben nincs, ezért tényleg csak annyi értelmük van, hogy megkímélnek a Nagyon_Hosszú_Osztály_Nevek gépelésétől
  • sokan nem szeretik a \ szintaxist
  • a keretrendszerem Kohana-ra épül, ami nem használ névtereket, és egyelőre nem is tervezik a bevezetésüket
  • ugrana a PHP 5.2 támogatása a rendszernek (mondjuk ez a legkevésbé fontos)

Szerintetek?
 
1

ugrana a PHP 5.2 támogatása a

Poetro · 2011. Szep. 3. (Szo), 14.55
ugrana a PHP 5.2 támogatása a rendszernek (mondjuk ez a legkevésbé fontos)

Miért? A legtöbb szolgáltatónál még csak 5.2 van, nagyon kevesen álltak még át 5.3-ra, valamint a névtér dolog nem ad annyit hozzá a kódhoz, hogy ennyivel megnöveld a követelményeket. Szerintem érdemesebb inkább 5.2 esetleg 5.1-es igényeket támasztani (ahogy teszi ezt a Yii illetve a ZF).
4

5.3

kenlas · 2011. Szep. 5. (H), 19.49
Az nem lehet indok, hogy a szolgáltatók nagyon lassan állnak át, pont az ilyenekkel lehetne rávenni a váltásra őket. Régóta nincs is már support az 5.2-höz...

A témához: új fejlesztés esetén én mindenképpen használnék névtereket, hogy ne legyen keveredés más összetevőkkel.
5

2011 január

Poetro · 2011. Szep. 5. (H), 21.39
Azért a 2011 januári 5.2.17 nem tűnik olyan réginek, legalábbis a PHP fejlesztésének ütemét tekintve.
6

Gentoo

janoszen · 2011. Szep. 5. (H), 21.59
A Gentoosok már hardmaskolták az 5.2-es vonalat, ami nem sok jót sejtet.

Egyébként aki FastCGI-vel csinálja a PHP hostolást, annak nem túl bonyolult forgatni egy 5.3-as PHP-t. (mod_php-val hostolni meg... csak azt nem borítja be, aki nem akarja.)
7

5.2.17

kenlas · 2011. Szep. 14. (Sze), 15.06
Az 5.2.17 csak egy hibajavítás volt, a support már korábban megszűnt az 5.2 vonalhoz!
2

Lesz

janoszen · 2011. Szep. 3. (Szo), 22.36
Előbb-utóbb lesz a PHP-ban is normális láthatóság és egyéb dolgok. Szerintem, érdemes erre építeni, ha megteheted. Az 5.3-as PHP-ban nagyon sok mindent javítottak pl. memóriakezelés, stb. terén, úgyhogy szerintem, érdemes átállni. Én használom több helyen production környezetben és csak jó tapasztalatok vannak vele.
8

+1

inf · 2011. Szep. 14. (Sze), 23.32
Jaja, plusz ha nem idétlenül fejleszted (mondjuk netbeansszel), akkor elég az osztálynevet kiírni, a névteret hozzácsapja az automatikus kiegészítés... Én is tákolok most egy keretrendszert hobbiból. Vannak ötleteim, amiket szeretnék megvalósítani, aztán egy ilyenbe pont be lehet szórni őket, amikor van fölös időm... :-)

Php-t még mindig van hova fejleszteni. Mondjuk csinálhatnának egy olyan uksort függvényt, ami nem csak a kulcsokat, hanem magát a tömböt is átadja. Jelen pillanatban, nincs olyan beépített függvény, amivel egyszerre kulcs és érték alapján lehetne tömböt rendezni. Ez mondjuk a legutóbbi dolog, amibe belefutottam, de szinte minden alkalommal találok valami szépséget ebben a nyelben :D
9

uksort

Poetro · 2011. Szep. 15. (Cs), 00.10
Nem értem a felvetést. Mit takar az, hogy kulcs és érték alapján? Egy kulcs csak egyszer fordulhat elő a tömbben, azaz ha az alapján rendezel, akkor minden más rendezés már teljesen feleslegessé válik.
10

A rendezés ugye valamilyen

inf · 2011. Szep. 15. (Cs), 14.25
A rendezés ugye valamilyen információ alapján történik. A mostani függvények vagy a kulcsot veszik információnak vagy az értéket, viszont a kulcs és az érték együttesen is alkothat ilyen rendezési információt, illetve a kulcs és/vagy az érték és valamilyen külső változó szintén. Az a probléma, hogy az uksort nem adja át magát a tömböt, így abból nem lehet kikérni az értéket, ami az adott kulcshoz tartozik. A másik, hogy nem lehet tetszőleges paramétert átadni a rendező függvénynek, szóval ha ilyesmit akarunk, akkor muszáj metódust használni rendezésre, és az aktuális példány tulajdonságaiból lekérni ezeket az információkat.
11

Ilyesmi?

Poetro · 2011. Szep. 15. (Cs), 15.25
Valami ilyesmire gondoltál?
  1. <?php  
  2. function ukvsort(&$array$cmp_function) {  
  3.   $to_sort = array();  
  4.   foreach ($array as $k => $v) {  
  5.     $to_sort[] = array('key' => $k'value' => $v);  
  6.     // Remélem ez működik Iterator-okkal is.  
  7.     unset($array[$k]);  
  8.   }  
  9.   usort($to_sort$cmp_function);  
  10.   foreach ($to_sort as $item) {  
  11.     $array[$item['key']] = $item['value'];  
  12.   }  
  13. }  
  14.   
  15. function cmp_function($a$b) {  
  16.   $a_val = $a['value'] + $a['key'];  
  17.   $b_val = $b['value'] + $b['key'];  
  18.   return ($a_val == $b_val) ? 0 : (($a_val < $b_val) ? -1 : 1);  
  19. }  
  20.   
  21. $arr = range(10, 2, -2);  
  22. print_r($arr);  
  23. ukvsort($arr'cmp_function');  
  24. print_r($arr);  
  25. ?>  
Kimenet:
Array
(
    [0] => 10
    [1] => 8
    [2] => 6
    [3] => 4
    [4] => 2
)
Array
(
    [4] => 2
    [3] => 4
    [2] => 6
    [1] => 8
    [0] => 10
)
12

Nálam ez valahogy így néz

inf · 2011. Szep. 15. (Cs), 16.30
Nálam ez valahogy így néz ki:
  1. class ArraySorter  
  2. {  
  3.     protected $array;  
  4.     protected $callback;  
  5.   
  6.     public function setCallBack($callback)  
  7.     {  
  8.         $this->callback=$callback;  
  9.     }  
  10.   
  11.     public function sort(array &$array)  
  12.     {  
  13.         $this->array=&$array;  
  14.         \uksort($this->arrayarray($this'compare'));  
  15.         unset($this->array);  
  16.     }  
  17.   
  18.     protected function compare($leftKey$rightKey)  
  19.     {  
  20.         return \call_user_func($this->callback, $leftKey$rightKey$this->array);  
  21.     }  
  22. }  
  23.   
  24. function cmp_function($a$b, &$array)  
  25. {   
  26.   $a_val = $a + $array[$a];    
  27.   $b_val = $b + $array[$b];    
  28.   return ($a_val == $b_val) ? 0 : (($a_val < $b_val) ? -1 : 1);    
  29. }    
  30.     
  31. $arr = range(10, 2, -2);    
  32. print_r($arr);  
  33. $sorter=new ArraySorter();  
  34. $sorter->setCallBack('cmp_function');  
  35. $sorter->sort($arr);   
  36. print_r($arr);   
Eldönthetjük, hogy melyik lassít jobban, az értékek lemásolása, vagy a plusz egy függvény hívás a rendezésnél...

Mondjuk ami megint idegesítő, hogy a tömböket nem lehet az objektumokhoz hasonlóan átadni, és mindig másolódnak az értékeik, aztán muszáj ezt az &$array-t tolni.
3

php 5.3 és névterek szerintem

szabo.b.gabor · 2011. Szep. 5. (H), 09.25
php 5.3 és névterek szerintem is. mert csak :)
könnyen mellé lehet rakni ugyanolyan nevű osztályokat..