Domanda

Cosa pensate ragazzi (specialmente PHP) riguardo a una convenzione di denominazione per le classi in cui il nome della classe riflette il percorso del file, relativo alla directory del progetto? per esempio:

# /project/Session/Abstract.php
# /project/Session/Database.php

class Session_Database extends Session_Abstract ...

Sono sicuro che avrai l'idea. Sono anche sicuro che alcuni dei professionisti sono ovvi ... ma cosa ne pensi - vale la pena allungare i nomi delle classi per ottenere una struttura di directory piuttosto bella che è facile da navigare?

Ciò consente anche una definizione __autoload ($ class) di una riga in PHP: str_replace ('_', '/', $ class);

Suppongo che alcune persone considereranno stupida tale convenzione. Personalmente mi piace, ma non l'ho visto in uso da altre persone e non sono sicuro che funzionerà così bene in pratica.

Uno dei contro potrebbe essere che con la rimozione delle chiamate include / request, tutte le classi dipendono (incollate insieme) dalla funzione di caricamento automatico, che alcuni potrebbero sostenere, non è conforme alla loro comprensione dell'accoppiamento libero.

L'unico riferimento che mi è noto finora su tale approccio è http: // softwareengineering .vazexqi.com / files / pattern.html

Quindi, hai un'opinione su questo?

È stato utile?

Soluzione

Allora non hai cercato. PEAR utilizza questo approccio. Anche Zend Framework . È uno standard piuttosto consolidato nel mondo PHP. Non so quando l'ho incontrato per la prima volta, ma l'ho usato personalmente e mi è piaciuto per diversi anni, sia come parte del mio framework sia come parte di framework disponibili pubblicamente come ZF.

Altri suggerimenti

L'unica cosa reale che non mi piace di questo è che quando devo spostare il codice, finisco per rielaborare molti nomi. Tuttavia, Emil ha già sottolineato che questo è praticamente alla pari per il corso, ma vorrei aggiungere Regole di denominazione PHP Userland .

Uso anche quella convenzione.

Non solo aiuta ad avere una bella struttura di file, ma aiuta anche con problemi di spaziatura dei nomi. Tale convenzione di denominazione consente di aggiungere prefissi alle classi per evitare nomi di classi duplicati.

Quando uscirà PHP 5.3 e finalmente avrà gli spazi dei nomi, userò ancora questa convenzione. L'unica cosa che farò diversamente è abbreviare i nomi delle mie classi, convertire i miei prefissi in spazi dei nomi corretti e apportare modifiche nel mio caricatore automatico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top