je verze namespace výhodná?

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

zdravím,
tak mě tak napadlo, zkoušel jsem novou 1.0 s namespace, popravdě, je to docela opruz, pokaždé když chci použít nějaký třídy apod… tak je nejprve volat pomocí např. use Nette/Environment nebo prostě use Nette/Cokoliv

jednoduší zápis mi vážně přijde ve verzích bez namespace… a tak si tak říkám…

v čem je vlastně používání namespace lepší? původně jsem si myslel, že se třebas urychlý načítání, ale… soubor loader.php se přece stejně načítá celý ne? tudíž tomu asi moc neurychlí…

nebo jak je to teda? :o)

dík za názory

redhead
Člen | 1313
+
0
-

Pokud ale budeš potřebovat jiné knihovny nebo stavět na již nějakém existujícím projektu, můžeš mít kolizi jmen tříd. V tom případě je to výhodné. Jinak souhlas, je to opruz a pokud to jde, používám bez nette namespace..

SyXcz
Člen | 75
+
0
-

přesně to jsem chtěl slyšet… jen sem se rači zeptal, jestli v tom neni i něco jinýho, tak aspoň můžu v klidu spát a vesele pokračovat bez namespace :)

Patrik Votoček
Člen | 2221
+
0
-

Ono moc obecně nejde napsat v čem jsou výhody namespace. Ano je to více psaní u vyspělejších jazyků (C#/Python/Ruby) se používá běžně. Jedním z důvodů používání namespace je již zmiňovaná kolize. Dalším je zabránění vzniku něčemu takovému Zend_Service_DeveloperGarden_Response_SecurityTokenServer_Exception . A celkově pak vypadá class tree aplikace trochu lépe.

Edit: jen doplním že namespace v PHP je celkem neodvratná budoucnost viz. Zend Framework 2.0, Symfony 2.0, Doctrine 2.0. Čím dříve se člověku dostane pod kůži tím lépe.

Editoval vrtak-cz (19. 4. 2010 19:45)

despiq
Člen | 320
+
0
-

ja bych rekl ze je to vyhoda, pro me obzvlast v modulove strukture
Frontend a Backend muze obsahovat stejne nazvy trid

Honza Marek
Člen | 1664
+
0
-
  1. Člověku to umožní psát výstižnější a kratší názvy tříd.
  2. Pokud máš dobré IDE, tak ti ty namespacy dokáže doplnit. V netbeansech stačí napsat (ani ne celý) název třídy, zmáčknout ctrl + mezerník a máš třídu včetně namespace. Stejný trik se dá použít nahoře v use.

Obecně jak jsem začal pracovat s namespacema, tak mám za to, že by se mělo nette bez namespaců zakázat zákonem. Existence dvou verzí přináší spoustu problémů třeba při psaní nette addonů, které by teoreticky měly fungovat v obou verzích.

Mikulas Dite
Člen | 756
+
0
-

Honza Marek napsal(a):
Existence dvou verzí přináší spoustu problémů třeba při psaní nette addonů, které by teoreticky měly fungovat v obou verzích.

Tak tady vidím problém v tom, že nemálo hostingů 5.3 nemá, takže mít verzi jenom s namespace by nedělalo dobrotu.

Patrik Votoček
Člen | 2221
+
0
-

Honza Marek napsal(a):

Obecně jak jsem začal pracovat s namespacema, tak mám za to, že by se mělo nette bez namespaců zakázat zákonem. Existence dvou verzí přináší spoustu problémů třeba při psaní nette addonů, které by teoreticky měly fungovat v obou verzích.

Naprosto souhlasím (stejně jako IE6 :-) ). Kdyby dvou verzí ale oni jsou tři.

Ad hostingy:
Asi to budu muset sledovat více než to dosud sleduju protože snad všechny „kvalitní“ české hostingy už PHP 5.3 mají některé dokonce i 5.3.2. Nicméně je fakt že jsem nedávno také narazil u zahraničního Media Temple (hostuje tam hodně OSS projektů jako třeba jQuery) PHP 5.3 také nemají nicméně se omluvily se slovy že až bude tak se ozvou a vrátily peníze. Snažím se totiž nalést alternativu k hostmonster-u (nevím jestli hostmonster PHP 5.3 má). A odpovědi typu VPS/VDS nebo vlastní server neberu hledám hosting né server.

SyXcz
Člen | 75
+
0
-

já mam hosting u station.cz a zhruba před měsícem zprovoznily jeden server s PHP 5.3.2 … viz http://s22.station.cz/php/

jinak máte asi pravdu, postupem času se tomu asi člověk nevyhne, a když to budu psát od začátku s namespace tak si na to i zvyknu… akorát mě pořát blbne, že při používání více nette tříd musím načítat víc a víc věcí… proč nejde použít všeobecně prostě use \Nette ? Vždyť všechny další jsou stejně jakoby ve stylu „sub-namespace“ nebo jak to nazvat… Člověku by se z toho všeho načítání namespace na začátku souboru tolik nemotala hlava :)

Editoval SyXcz (19. 4. 2010 22:08)

despiq
Člen | 320
+
0
-

uz sem to tu resil proc to asi nejde
mas treba tridu User v namespace Nette a v namespace NeNette
takze bys napsal

<?php
use Nette;
use NeNette;

$foo = new User();
?>

tak jakou tridu by to pak volalo?
jeste sem ale nezkousel co to dela ted kdyz usnes obe tridy se stejnym nazvem, asi to hodi error ale ciste teoreticky bys pak nemohl mit ve dvou prostorech stejnou tridu pokud bys je chtel pouzit oba najednou a to je podle meho jednim z hlavnich veci namespacu

SyXcz
Člen | 75
+
0
-

tak trochu OT:

tak mi to nedalo když každej pořát básní o netbeans… a koukam :) PSPad se už jen válí někde v program files :)

koukám že takhle si na to zvyknu i rychleji a nemusím používat use Nette\Application, sám mi před třídu doplní kompletní namespace <?php $f = new \Nette\Application\AppForm(); ?>… takže mě defakto namespace nemusí trápit :)

už jen vychytat nějaký klávesový zkratky a podobně pro ulehčení práce :o)

Filip Procházka
Moderator | 4668
+
0
-
// řešení 1
use Nette\Web\User;
use Kdyby\User AS KUser;

$foo = new User();
$bar = new KUser();

// řešení 2
use Nette\Web\User;
use Kdyby;

$foo = new User();
$bar = new Kdyby\User();
Patrik Votoček
Člen | 2221
+
0
-

Řešení 3:

namespace Nella\Foo;

use Nella\Security\User;

$foo = new User;
$bar = new \Nette\Web\User;