Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy kiedykolwiek, w praktyce, potrzebowaliście namespaców?
Forum PHP.pl > Forum > PHP
Stron: 1, 2
pedro84
Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Chciałbym przypomnieć, że póki w PHP nie było przestrzeni nazw, wszyscy programowali bez przestrzeni nazw. Czy więc były potrzebne? Odpowiedź jest oczywiście tylko jedna: NIE - w sensie takim, że nie jest to element języka, którego istnienie miało by określać możliwość napisania programu. To jest proste i logiczne, czego tu można nie rozumieć?

Jedna mała uwaga ode mnie, bo męczocy i smutny ten wątek już jest. Niby programiści, niby logiczne myślenie, a większość z Was naprawdę słabo argumentuje.

Kontrargument na Twój, niech będzie, że argument: kiedyś w PHP nie było porządnego OOP. Czy było więc potrzebny? Czy więc były potrzebne? Odpowiedź jest oczywiście tylko jedna: NIE - w sensie takim, że nie jest to element języka, którego istnienie miało by określać możliwość napisania programu. To jest proste i logiczne, czego tu można nie rozumieć?

Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Mogę sobie też wyobrazić, że ktoś "potrzebuje namespaców" do napisania programu, bo bez nich po prostu nie da się tego oprogramowania napisać - no, nie da się zakodować rozwiązania i koniec - nic, zero, bez wyjścia, kaput. Tylko, że... nie widziałem jeszcze takiego przypadku w realu, aczkolwiek chętnie poznam. Mógłby ktoś podesłać link z jakiegoś case study o takim projekcie w PHP?

I takiego nie będzie. Tak samo jak aplikacji, której nie dałoby się napisać strukturalnie.

---

Ja naprawdę nie rozumiem już zupełnie skąd ten hejt niektórych na przestrzenie. Widziałem marudzenie na większość ficzerów, standardów, ale żadne nie było tak słąbo argumentowane jak to tutaj. Strach pomyśleć co będzie po wydaniu PHP7...
by_ikar
Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Sam sobie przeczysz. W PHP namespaców kiedyś nie było, obecnie są. Tak samo jak są języki bez namespaców. Czy można w nich programować? Tak, można. Czy można w PHP programować bez namespaców? Tak, można. Twierdzenie, że nie można, jest zwyczajną bzdurą. Może to być kwestia wyboru, osobistych preferencji programisty, czy będzie pisał swój kod w PHP z użyciem namespaces, czy bez nich, czy to lubi, czy nie lubi. Dziwne mnie jak można tego nie rozumieć.

Nigdzie nie napisałem że się nie da.. Preferencje to możesz mieć seksualne, to nie jest coś co sobie możesz wybierać, np rodzaj frameworka, to jest jeden ze sposobów które oferuje ci język, na to żebyś mógł łatwiej ogarnąć swój projekt. Rozumiem że komuś to jest niepotrzebne, lub kogoś to przerasta. Dlatego też napisałem że przeciwnicy NS to przeważnie stare wygi, albo początkujący, dla których każda dodatkowa informacja to za dużo wiedzy na zapamiętanie/zrozumienie.

Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Mylisz się - moje stwierdzenie, że trzeba to pisać za każdym razem, nie jest, jak to pogardliwie określiłeś, jęczeniem, ale prostym stwierdzeniem faktu. Pytanie tylko, czy to rozumiesz. Fakt występuje niezależnie od Twojego czy mojego widzimisię. Inną sprawą jest moja czy Twoja subiektywna opinia, tudzież ocena tego faktu, a z opinią jeden się zgadza a drugi nie. Otóż jeśli Ty uważasz, że to jest naturalne, fajne i jak najbardziej w porządku, że na początku pliku znajduje się xx dyrektyw use, i wcale Ci to nie przeszkadza, to OK - nic mi do tego. Mi natomiast to nieco przeszkadza, i traktuję te sekcje use'ów jako swego rodzaju "zło konieczne" istnienia namespaces, bo lepiej tego do tej pory w tych językach nie wymyślono. Z dokładnie tego samego powodu nie lubię także ładowania klas instrukcjami require. Rzecz gustu, można by rzec tongue.gif


A jak chcesz inaczej dołączać inne klasy/pliki do aktualnego pliku jak nie za pomocą require/include ?

Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Dyskutować to można nad tym czy użycie namespaców, które wiąże się z takimi a takimi kosztami, a daje takie a takie zyski, sumarycznie się opłaca w danym przypadku. No przepraszam, ale dla mnie ktoś, kto pisze wszystko, każdy, nawet najprostszy, jednoplikowy programik PHP zamknięty w namespace, to prawdopodobnie cierpi na nerwicę natręctw biggrin.gif bądź robi to bezmyślnie niczym wyuczony nawyk.


Mhm bo trzymanie się standardów i jakichś wytycznych, to nerwica natręctw. Koszty związane z użyciem namespace, chyba tobie daruje, bo najwidoczniej nigdy nie pracowałeś nad czymś co jest napisane z użyciem przestrzeni nazw. Jeżeli twój jednoplikowy program, w którym założysz że dla czytelności nazwiesz swoje funkcje nazwami, które już występują przykładowo w bibliotece standardowej, to możesz użyć NS aby twój program był taki jak sobie to wymyśliłeś i działał. A ty sam nie musisz zastanawiać się nad refaktoryzacją.

Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Pytanie zadane na początku było: "czy kiedykolwiek potrzebowaliście namespaców?". Niech każdy za siebie odpowie. Ja nie potrzebowałem, choć raz zdarzyło się, że kilka klas w projekcie miało taki sam pierwszy człon nazwy, co pewna zewnętrzna biblioteka której dołączenie było rozważane - ale problem zniknął sam, bo zapadła decyzja użycia innej biblioteki. Więc muszę szczerze przyznać się, że nie nigdy tak naprawdę nie potrzebowałem przestrzeni nazw, choć to nie jest politycznie poprawne tongue.gif


Tak jak myślałem, nigdy nie pracowałeś nad projektem w którym na porządku dziennym używa się NS, ale łatwo jest ci strzelić kilka postów na temat tego że NS to bzdura. Niech zgadnę zend? Kohana? A może jakiś wordpress ?

Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Chciałbym przypomnieć, że póki w PHP nie było przestrzeni nazw, wszyscy programowali bez przestrzeni nazw. Czy więc były potrzebne? Odpowiedź jest oczywiście tylko jedna: NIE - w sensie takim, że nie jest to element języka, którego istnienie miało by określać możliwość napisania programu. To jest proste i logiczne, czego tu można nie rozumieć?


Póki nie było preg_* wszyscy używali ereg które z optymalizacją miało niewiele wspólnego. Czy warto jest używać preg_* skoro wszyscy programowali w ereg i było zajebiście? Zakoduj sobie jedno. Albo klepiesz kod, albo programujesz. Sam sobie odpowiedz na to pytanie. A porównań do nowości wprowadzanych w różnych wersjach php jest dziesiątki.

Cytat(irmidjusz @ 7.09.2014, 00:06:31 ) *
Niektórzy tu nie mają żadnych argumentów więc co robią? Wydają osądy i używają różnych epitetów pod adresem adwersarzy, co świadczy tylko o tym, że się nie ma żadnego sensownego zdania w temacie - a wiadomo: jak nie wiadomo co powiedzieć, to najłatwiej zmieszać z błotem, zasugerować, że ta druga osoba to albo nowicjusz, albo jakiś staruszek, który "klepie globale", czy inne takie. To naprawdę śmieszne. Paradoksalnie, to przynajmniej pod jednym względem jest dokładnie odwrotnie, bo to właśnie stary wyga będzie miał doświadczenie, dystans i własny osąd (plus zdrowy rozsądek), których to młodziakom czasem brakuje.


Mhm, czyli moje argumenty typu co mamy dzięki przestrzenią nazw, co w sumie nawet zacytowałeś, to już nie jest argument..? I powiedz, jak tutaj nie używać epitetów? Powiem to otwarcie, bo widzę takie skróty myślowe są odbierane jako złośliwy komentarz. Jeżeli chcesz się dzisiaj rozwijać i nie siedzieć do końca życia nad wordpressem, albo frameworkami ze wsteczną kompatybilnością php5.2, to każdy twój negatywny komentarz na temat przestrzeni nazw (z wyjątkiem separatora) automatycznie stawia cię w jednym z dwóch miejsc. Albo siedzisz na jakimś starym FW, albo klepiesz wtyczki do wordpressa (czy czegoś podobnego). No tak, bo tylko stary wyga może wydawać jedyne słuszne osądy biggrin.gif

A miał się ten php rozwijać, miał iść do przodu, ale przez skostniałych klepaczy, wciąż na hostingach pożądany jest php w wersji 5.2.. Oby tak dalej, dzięki takiemu podejściu, ludzie którzy mają aspiracje więcej zarabiają.
irmidjusz
Hehe, dobra chłopaki, ubawiłem się tymi komentarzami co do mnie smile.gif Zamykamy temat.
!*!


Wygląda na to, że temat można zamknąć klasycznym: są programiści i są "programiści".
pedro84
Cytat(!*! @ 7.09.2014, 11:53:57 ) *
Wygląda na to, że temat można zamknąć klasycznym: są programiści i są "programiści".

Zdecydowanie. A jak braknie argumentów, to piszemy, że się dobrze bawimy i zamykamy temat biggrin.gif
by_ikar
Taa przecież include_path wystarczy użyć raz, bez żadnego impaktu na pozostałe pliki! Na co komu przestrzenie nazw!

To że include_path mieli dyskiem za każdym razem kiedy próbujesz odczytać plik, to już jest najmniej istotne.. Ważne że nie trzeba w notatniku ręcznie dopisywać use na początku pliku.. Załamka totalna.
!*!
Cytat(pedro84 @ 7.09.2014, 15:14:34 ) *
Zdecydowanie. A jak braknie argumentów, to piszemy, że się dobrze bawimy i zamykamy temat biggrin.gif


Szczerze mówiąc to już się pogubiłem jakich Ty argumentów szukasz, z tematu zrobił się niezły burdel, już dawno takiego tu nie było. Moim zdaniem @by_ikar dobrze podsumował całość i również się pod tym podpisuję.
Pilsener
Argumentów nie brak i krytyków namespace w PHP też, tutaj znalazłem stary, acz ciekawy wpis:
https://pornel.net/phpns/pl

Po prostu jakoś mi brakuje achów i ochów na temat zalet używania przestrzeni nazw w PHP - po tego typu ficzerach oczekiwałbym jednoznacznego entuzjazmu i euforii wink.gif

Paradoksalnie zatoczyliśmy koło: zamiast stada topornych include/require jak w czasach PHP 4 mamy dziś poemat wdzięcznych usów - ale ważne Panowie, że nie rdzewiejemy i nie gnuśniejemy, roboty jest od metra i tak dalej Lkingsmiley.png
pedro84
Cytat(Pilsener @ 9.09.2014, 22:05:01 ) *
Argumentów nie brak i krytyków namespace w PHP też, tutaj znalazłem stary, acz ciekawy wpis:
https://pornel.net/phpns/pl

Rzeczowe argumenty, aczkolwiek nie wszystkie, których niektórym w tym wątku brakowało.

Mała uwaga, PHP jako język ogólnie jest dosyć niedorobiony i z tym musimy się:
a) pogodzić
cool.gif programować w innym.

Ja tam bardzo ubolewam, że w PHP7 nie ma szans (i chyba nigdy nie będzie) na poprawę i ujednolicenie API.
by_ikar
https://pornel.net/phpns/pl -

Cytat
Nie da się importować całych przestrzeni

Pośrednio da się to "rozwiązać":

  1. use Foo\Driver;
  2.  
  3. $a = new Driver\Apc();
  4. $b = new Driver\xCache();


Cytat
Zapomniane importy/aliasy

Odnośnie edyotrów które podświetlają nieużywany kod..

Sporo z pozostałych problemów wynika z kompatybilności wstecznej.. Jeżeli teraz ludzie narzekają na NS, nawet w takim stanie w jakim jest, to co by było gdyby przebudowali php i nie byłoby wstecznej kompatybilności? No patrząc na tych wielbicieli include_path i innych zabytków, to brak wstecznej kompatybilności byłby zabójczy dla php. I tak też się stało z php6, które było klapą.

Niech sobie te przestrzenie nazw będą jakie są, ważne że spełniają swoje kilka zadań, nawet z kilkoma problemami, ale spełniają. Ktoś kto nie docenia PSR-0 czy PSR-4 IMO jeżeli nie przemyśli swojej drogi rozwoju, to może za kilka lat obudzić się z ręką w nocniku, w jakiejś firmie krzak, klepiąc wtyczki do zabytkowych wersji wordpressa. Rozumiem że ktoś to lubi, spoko i do tego ludzie są potrzebni. No ale tacy ludzie nie mogą decydować, czy też IMO wypowiadać się na temat przyszłości tego języka bo to jest bezsensu..
Turson
Cytat(nrm @ 5.09.2014, 13:00:43 ) *
Laravel 4.3 będzie "nejmspejsował" nawet kontrolery wink.gif więc faktycznie "namespace all the things" wink.gif

czemu "nawet"? To namespace dla kontrolerów jest jakaś abstrakcją?
Crozin
Lepiej dać przykład - nieduży (!) projekt, wykorzystujący kilka zew. bibliotek - 475 klas, które mają taką samą końcówkę nazwy z czego rekordzistka powtarza się 40 razy:
Kod
Array
(
    [Method] => 2
    [FirePHPHandler] => 2
    [Generator] => 2
    [FileLocatorInterface] => 2
    [Formatter] => 2
    [HandlerInterface] => 2
    [RedisHandler] => 2
    [ReadOnlyResource] => 2
    [ServiceException] => 2
    [WebProcessor] => 2
    [SwiftMailerHandler] => 2
    [TestKernel] => 2
    [MainConfiguration] => 2
    [RegisterEventListenersAndSubscribersPass] => 2
    ...
    wycięte - zbyt długa treść postu
    ...
    [TraceableEventDispatcher] => 2
    [RegisterListenersPass] => 2
    [FormBuilderInterface] => 2
    [Regex] => 2
    [Glob] => 2
    [FileNotFoundException] => 2
    [Hour1200Transformer] => 2
    [Hour1201Transformer] => 2
    [PropertyPath] => 2
    [TokenNotFoundException] => 2
    [MissingOptionsException] => 2
    [InvalidOptionsException] => 2
    [NotImplementedException] => 2
    [Optional] => 2
    [ExecutionContext] => 2
    [PropertyMetadataInterface] => 2
    [MetadataInterface] => 2
    [FilesLoader] => 2
    [ExecutionContextInterface] => 2
    [MethodNotImplementedException] => 2
    [MethodArgumentValueNotImplementedException] => 2
    [MinuteTransformer] => 2
    [MonthTransformer] => 2
    [HourTransformer] => 2
    [Hour2401Transformer] => 2
    [Hour2400Transformer] => 2
    [QuarterTransformer] => 2
    [SecondTransformer] => 2
    [MethodArgumentNotImplementedException] => 2
    [YearTransformer] => 2
    [Transformer] => 2
    [TimeZoneTransformer] => 2
    [FlattenException] => 2
    [FatalErrorException] => 2
    [TextDescriptor] => 2
    [XmlDescriptor] => 2
    [MarkdownDescriptor] => 2
    [JsonDescriptor] => 2
    [Descriptor] => 2
    [DescriptorHelper] => 2
    [RouterDataCollector] => 2
    [DelegatingLoader] => 2
    [HttpCache] => 2
    [TestSessionListener] => 2
    [SessionListener] => 2
    [TemplatingPass] => 2
    [TwigEngine] => 2
    [Pivot] => 2
    [DocumentInterface] => 2
    [MultiQuery] => 2
    [EdisMax] => 2
    [DistributedSearch] => 2
    [LocaleListener] => 2
    [CollectionToArrayTransformer] => 2
    [StubTranslator] => 2
    [Scope] => 2
    [LintCommand] => 2
    [MessageDataCollector] => 2
    [Router] => 2
    [PathPackage] => 2
    [InvalidConfigurationException] => 2
    [NodeInterface] => 2
    [VariableNodeDefinition] => 2
    [NodeBuilder] => 2
    [ArrayNode] => 2
    [HelperInterface] => 2
    [TokenStream] => 2
    [ExceptionHandler] => 2
    [TranslatorInterface] => 2
    [ExtensionInterface] => 2
    [AbstractExtension] => 2
    [DebugClassLoader] => 2
    [WebProfilerExtension] => 2
    [TemplateNameParser] => 2
    [PhpEngine] => 2
    [EngineInterface] => 2
    [DelegatingEngine] => 2
    [TemplateReference] => 2
    [ObjectsProvider] => 2
    [ExceptionController] => 2
    [DebugCommand] => 2
    [FirewallMap] => 2
    [ConstraintValidatorFactory] => 2
    [ServerException] => 2
    [ResponseParserInterface] => 2
    [YamlDriver] => 2
    [XmlDriver] => 2
    [DriverChain] => 2
    [SimpleObjectHydrator] => 2
    [OrderBy] => 2
    [PreFlush] => 2
    [RequestException] => 2
    [Literal] => 2
    [Join] => 2
    [ObjectHydrator] => 2
    [SequenceGenerator] => 2
    [ImportCommand] => 2
    [AbstractVisitor] => 2
    [View] => 2
    [Sequence] => 2
    [DateTimeType] => 2
    [DateType] => 2
    [TimeType] => 2
    [TextType] => 2
    [IntegerType] => 2
    [Base] => 2
    [LimitSubqueryOutputWalker] => 2
    [ComponentController] => 2
    [ReviewController] => 2
    [ProfileController] => 2
    [FeedbackController] => 2
    [LoadAccountData] => 2
    [LoadSurveyData] => 2
    [Address] => 2
    [Traceable] => 2
    [TypeType] => 2
    [SecurityEvents] => 2
    [SignerInterface] => 2
    [DumpCommand] => 2
    [SchemaValidator] => 2
    [Paginator] => 2
    [Controller] => 2
    [JsonResponse] => 2
    [AbstractRepository] => 2
    [UserInterface] => 2
    [AbstractController] => 2
    [Index] => 2
    [Constraint] => 2
    [DoctrineDataCollector] => 2
    [ValidateSchemaCommand] => 2
    [DoctrineCommand] => 2
    [Writer] => 2
    [DoctrineExtension] => 2
    [MetadataFactory] => 2
    [Reader] => 2
    [Enum] => 2
    [Registry] => 2
    [DefaultNamingStrategy] => 2
    [FilterInterface] => 2
    [AsseticNode] => 2
    [FilesystemCache] => 2
    [ConfigCache] => 2
    [ArrayCache] => 2
    [AsseticTokenParser] => 2
    [AssetFactory] => 2
    [FilterCollection] => 2
    [DirectoryResourceIterator] => 2
    [CoalescingDirectoryResource] => 2
    [FileCache] => 2
    [RedisCache] => 2
    [StaticPHPDriver] => 2
    [PHPDriver] => 2
    [ManagerRegistry] => 2
    [PreUpdateEventArgs] => 2
    [PersistentObject] => 2
    [ConnectionException] => 2
    [QueryException] => 2
    [QueryBuilder] => 2
    [TableGenerator] => 2
    [OnClearEventArgs] => 2
    [LoadClassMetadataEventArgs] => 2
    [Comparison] => 2
    [ArrayCollection] => 2
    [ClassLoader] => 2
    [CompositeExpression] => 2
    [ExpressionBuilder] => 2
    [LifecycleEventArgs] => 2
    [AbstractLexer] => 2
    [AbstractExecutor] => 2
    [Answer] => 2
    [MultiTableDeleteExecutor] => 2
    [AbstractTreeRepository] => 2
    [Filesystem] => 2
    [TranslationRepository] => 2
    [AbstractTranslation] => 2
    [AbstractPersonalTranslation] => 2
    [Local] => 2
    [MaterializedPathRepository] => 2
    [Closure] => 2
    [ContactMessageRepository] => 2
    [MaterializedPath] => 2
    [SecurityListener] => 2
    [Size] => 2
    [SoftDeleteableFilter] => 2
    [LogEntry] => 2
    [IpTraceable] => 2
    [AbstractLogEntry] => 2
    [LogEntryRepository] => 2
    [Loggable] => 2
    [Language] => 2
    [ReferenceIntegrity] => 2
    [Blameable] => 2
    [Uploadable] => 2
    [Translatable] => 2
    [SoftDeleteable] => 2
    [Nested] => 2
    [FilesystemMap] => 2
    [BadResponseException] => 2
    [FileCookieJar] => 2
    [RequestMediator] => 2
    [CookieJar] => 2
    [AnswerType] => 2
    [BooleanToStringTransformer] => 2
    [ClientException] => 2
    [ContactMessageType] => 2
    [MimeTypeGuesser] => 2
    [CouldNotRewindStreamException] => 2
    [ContactMessage] => 2
    [PhotoType] => 2
    [CookieJarInterface] => 2
    [SubmitType] => 2
    [Statement] => 3
    [Proxy] => 3
    [MappingException] => 3
    [FileLoader] => 3
    [FilesystemLoader] => 3
    [Server] => 3
    [ClassMetadataFactory] => 3
    [Column] => 3
    [Imagine] => 3
    [Table] => 3
    [CacheInterface] => 3
    [ParseException] => 3
    [Shell] => 3
    [Font] => 3
    [RedirectableUrlMatcher] => 3
    [Drawer] => 3
    [ValidatorInterface] => 3
    [Effects] => 3
    [AsseticExtension] => 3
    [DumperInterface] => 3
    [TypeTestCase] => 3
    [HttpException] => 3
    [Header] => 3
    [Layers] => 3
    [Cache] => 3
    [Event] => 3
    [ConnectionFactory] => 3
    [Url] => 3
    [MimeTypeGuesserInterface] => 3
    [Required] => 3
    [ClassUtils] => 3
    [FilterManager] => 3
    [Inflector] => 3
    [ProfilerController] => 3
    [Lexer] => 3
    [ApcCache] => 3
    [PhpFileLoader] => 3
    [XmlFileLoader] => 3
    [AccessDeniedException] => 3
    [ResourceInterface] => 3
    [Form] => 3
    [FileResource] => 3
    [DirectoryResource] => 3
    [Comparator] => 3
    [Extension] => 3
    [RoutingExtension] => 3
    [Timestampable] => 3
    [ImageInterface] => 3
    [Stream] => 3
    [LoginController] => 3
    [ControllerResolver] => 3
    [Helper] => 3
    [Route] => 3
    [LoggerInterface] => 3
    [Account] => 3
    [MetadataFactoryInterface] => 3
    [Compiler] => 3
    [Question] => 3
    [PropertyMetadata] => 3
    [ErrorHandler] => 3
    [SurveyController] => 3
    [CompanyReviewController] => 3
    [Profile] => 3
    [Entity] => 3
    [AbstractNode] => 3
    [Spellcheck] => 3
    [Grouping] => 3
    [Parameter] => 4
    [UnexpectedTypeException] => 4
    [Application] => 4
    [FunctionNode] => 4
    [AppKernel] => 4
    [SearchType] => 4
    [Range] => 4
    [SecurityExtension] => 4
    [Node] => 4
    [Locale] => 4
    [TestBundle] => 4
    [Highlighting] => 4
    [MoreLikeThis] => 4
    [Cookie] => 4
    [AbstractCommand] => 4
    [ExpressionLanguage] => 4
    [ClientInterface] => 4
    [Token] => 4
    [File] => 4
    [YamlFileLoader] => 4
    [Schema] => 4
    [WebTestCase] => 4
    [Translator] => 4
    [FileLocator] => 4
    [Reference] => 4
    [Container] => 4
    [FacetSet] => 4
    [Autoloader] => 4
    [AdapterInterface] => 4
    [Request] => 5
    [AnnotationDriver] => 5
    [Stats] => 5
    [Connection] => 5
    [Type] => 5
    [AbstractResource] => 5
    [Debug] => 5
    [LogicException] => 5
    [Loader] => 5
    [Collection] => 5
    [Expression] => 5
    [Translation] => 5
    [Command] => 6
    [Response] => 6
    [LoaderInterface] => 6
    [Logger] => 6
    [UnexpectedValueException] => 6
    [User] => 6
    [ResponseParser] => 6
    [TestCase] => 6
    [BadMethodCallException] => 6
    [Parser] => 7
    [Validator] => 7
    [Image] => 7
    [ClassMetadata] => 7
    [Events] => 8
    [OutOfBoundsException] => 8
    [DefaultController] => 8
    [Field] => 8
    [Document] => 9
    [RequestBuilder] => 10
    [ODM] => 10
    [ORM] => 11
    [Client] => 11
    [Driver] => 12
    [Yaml] => 12
    [Xml] => 13
    [Version] => 13
    [Query] => 14
    [Service] => 14
    [Annotation] => 15
    [Result] => 15
    [Exception] => 15
    [ExceptionInterface] => 17
    [InvalidArgumentException] => 18
    [RuntimeException] => 19
    [Configuration] => 40
)

475
Warto jeszcze zauważyć, że projekt wykorzystuje również biblioteki, które nie korzystają z przestrzeni nazw (klasy typu Twig_TokenParser_Extends czy Squiz_Sniffs_CSS_ColonSpacingSniff) co jeszcze zaniża wynik.
nrm
Cytat(Turson @ 10.09.2014, 09:12:02 ) *
czemu "nawet"? To namespace dla kontrolerów jest jakaś abstrakcją?

Bo jest spór o to podobny jak w tym wątku wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.