je verze namespace výhodná?
- SyXcz
- Člen | 75
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
- Patrik Votoček
- Člen | 2221
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)
- Honza Marek
- Člen | 1664
- Člověku to umožní psát výstižnější a kratší názvy tříd.
- 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
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
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
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
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
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
// ř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
Řešení 3:
namespace Nella\Foo;
use Nella\Security\User;
$foo = new User;
$bar = new \Nette\Web\User;