DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   PHP Namespace vs PEAR Naming Convention (http://www.devprotalk.com/showthread.php?t=9498)

MaxMagnus 25. 12. 2010. 12:56

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 :)

ppavlovic 26. 12. 2010. 00:54

Vidi odgovore na isto pitanje: http://stackoverflow.com/questions/1...ing-namespaces

jablan 26. 12. 2010. 09:28

@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?

ivanhoe 26. 12. 2010. 15:16

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 :))...

jablan 27. 12. 2010. 15:48

Citat:

Originalno napisao jablan (Napišite 93389)
@MaxMagnus: generalno ne razumem poentu interfejsa koji se zove Interface ili apstraktne klase koja se zove Abstract?

Off Topic: ...osim ako nije u pitanju Rubi, gde postoji klasa Class :) ali to je zato što je ona u isto vreme i objekat.

bluesman 27. 12. 2010. 17:07

^ Nešto kao na primer StdClass ? Šteta što se u PHP-u niko nije setio toga :)

jablan 27. 12. 2010. 17:35

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).

MaxMagnus 27. 12. 2010. 22:31

@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?

Dragi Tata 27. 12. 2010. 22:46

Citat:

Originalno napisao jablan (Napišite 93423)
Off Topic: ...osim ako nije u pitanju Rubi, gde postoji klasa Class :) ali to je zato što je ona u isto vreme i objekat.

Smalltalk :1044:

ivanhoe 27. 12. 2010. 23:27

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 10:24.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.