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?
<?php
function ukvsort(&$array, $cmp_function) {
  $to_sort = array();
  foreach ($array as $k => $v) {
    $to_sort[] = array('key' => $k, 'value' => $v);
    // Remélem ez működik Iterator-okkal is.
    unset($array[$k]);
  }
  usort($to_sort, $cmp_function);
  foreach ($to_sort as $item) {
    $array[$item['key']] = $item['value'];
  }
}

function cmp_function($a, $b) {
  $a_val = $a['value'] + $a['key'];
  $b_val = $b['value'] + $b['key'];
  return ($a_val == $b_val) ? 0 : (($a_val < $b_val) ? -1 : 1);
}

$arr = range(10, 2, -2);
print_r($arr);
ukvsort($arr, 'cmp_function');
print_r($arr);
?>
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:

class ArraySorter
{
    protected $array;
    protected $callback;

    public function setCallBack($callback)
    {
        $this->callback=$callback;
    }

    public function sort(array &$array)
    {
        $this->array=&$array;
        \uksort($this->array, array($this, 'compare'));
        unset($this->array);
    }

    protected function compare($leftKey, $rightKey)
    {
        return \call_user_func($this->callback, $leftKey, $rightKey, $this->array);
    }
}

function cmp_function($a, $b, &$array)
{ 
  $a_val = $a + $array[$a];  
  $b_val = $b + $array[$b];  
  return ($a_val == $b_val) ? 0 : (($a_val < $b_val) ? -1 : 1);  
}  
  
$arr = range(10, 2, -2);  
print_r($arr);
$sorter=new ArraySorter();
$sorter->setCallBack('cmp_function');
$sorter->sort($arr); 
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..