PHP Namespace vs PEAR Naming Convention
Problem na koji sam naisao je sledeci. Pre 5.3 namespace-ova najcesci nacin resavanja problema sa imenovanjem klasa je bio PEAR NC, sa kojim sam se najvise susretao u Zend FWu. Primer:
Zend_Db_Table_Row ovo je kasnije vrlo jednostavno prebaciti na NS \Zend\Db\Table\Row. Problem nastaje kod rezervisanih reci, konkretno Abstract i Interface. Dosta klasa nasledjuje nesto slicno Foo_Bar_Abstract (ili implemetira Foo_Bar_Interface) ali onda nastaje problem: namespace \Foo\Bar; abstract class Abstract interface Interface sto se tice Abstract "resenje" sam nasao (hvala i dejanr na istom predlogu) koristeci Base umesto Abstract ali mi sad ostaje probem sa Interface. razmisljao sam se o FooInterface ali mi nije dovoljno "elegantno" (posto zelim da imam "jedinstveno" ime), bar za mene. Takodje i cesti predlozi po netu o koriscenju "I" (poreklom iz Hungarian notation) prefixa su mi pogresni (class Foo implements IFoo) Sta DPT community misli o ovome? Hvala :) |
Vidi odgovore na isto pitanje: http://stackoverflow.com/questions/1...ing-namespaces
|
@MaxMagnus: Nisam radio sa OOP-om u PHP, ali generalno ne razumem poentu interfejsa koji se zove Interface ili apstraktne klase koja se zove Abstract?
|
meni bi bilo logicno da ih nazoves Nesto_interface, ili jos bolje samo Nesto (a ocito je da je interfejs, jer interfejs moras da upotrebis na samo jedan tacno odredjeni nacin, ne mozes nikako da pomesas kad vidis kako je upotrebljen u kodu)
glavna mana madjarske notacije ili ovih sufixa/prefixa je sto ti presedne kad moras da kucas sva ta slova, niko ne zeli da mu ime klase ili interfejsa bude u 3 reda na ekranu, dugi nazivi usporavaju "skenirajnje" pogledom kroz kod... and it takes fun out of programmin' (bar sto se mene tice, osetim se previse korporativno :))... |
Citat:
Off Topic: ...osim ako nije u pitanju Rubi, gde postoji klasa Class :) ali to je zato što je ona u isto vreme i objekat. |
^ Nešto kao na primer StdClass ? Šteta što se u PHP-u niko nije setio toga :)
|
Ne baš. Koliko kapiram, stdClass je neka prazna klasa (ali ne i bazna klasa za sve ostale klase). BTW, šta znači ovo "std"? Mora da je nešto logično. :P
Rubijeva Class je klasa čije su ostale klase instance (npr. klasa String je instanca klase Class). |
@jablan: kao sto i sam rekao nisi radio sa OOP pa ni ne shvatam tvoj post? na moje pitanje si odgovorio pitanjem... i trazio od mene da ti je objasnim koji motiv su kreatori Zend Frameworka imali kad su klase nazivali tako. ja sam uvek ucio da se ne koriste kljucne (rezervisane) reci, pa tako nemam tabele koje se zovu select, nemam klase koje se zovu Abstract i Interface... Licno a i na poslu za Abstract klase koristimo Base, posto to ima smisla. Nemam "resenje" za interfejse.
Meni se licno ne svidja prefixovanje sa I, jer se slabo "vidi"... Moze li neko da podeli svoja iskustva sa nama, kako ostali nazivaju svoje klase, i koliko ljudi koristi namespaces u PHPu? |
Citat:
|
Off Topic: ja moram priznati da u jeziku poput php-a ne vidim potrebu za tolikim OOP formalnostima, base klasama, interfejsima i sl... meni se ta Zend filozfija ne dopada, ako hoces javu, programiraj u javi, nemoj od php-a praviti javu po svaku cenu... napravi se duboko stablo nasledjivanja, funkcije pozivaju fuinkcije, koje pozivaju funkcije, itd... i onda se cude zasto im se sajt vuce cim skoci poseta... just my 2 cents |
Vreme je GMT +2. Trenutno vreme je 19:16. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.