[PHP] nazewnictwo kals - framework

0

Witam.
Ostatnio pisze mały framework na własny użytek. Stanąłem przed pewnym problemem, nie jestem pewien jaki standard nazewnictwa klas, widoków itp narzucić. Chciałbym żeby nazwa klasy jednoznacznie określała typ wczytywanego pliku (czyli zupełne przeciwieństwo kohany gdzie przeszukuje każdy folder w poszukiwaniu pasującej nazwy). Myślałem o zastosowaniu nazw takich jak nazwa_view , nazwa_class, nazwa_helper itd. Z drugiej strony zastanawiałem się nad zbudowaniem nazewnictwa w którym typ określany jest po kropce w nazwie pliku np nazwa.class.php ...
Jednak najbardziej trafne i dająca największe możliwości wydaje mi się próba połączenie tych obu metod w formie np nazwa_class.class.php jednak wygląda to dość dziwnie i nazwy stworzone w ten sposób są dość długie.

Chciałbym wiedzieć co o tym sądzicie.

0

tak abc-class.class.php wygląda dziwnie
proponuję kropkę
zresztą nie wiem co za różnica a patrząc na to jakie masz problemy to myślę że ten framework prędko nie powstanie

0

mi sie podoba konwencja zenda/doctrinem jednoczesnie upraszczajaca autoloader:

przykladowo: Zend_Controller_Front, Zend_Controller_Action, Doctrine_Record, Doctrine_Table
nazwa klasy okresla jej polazenie: Zend/Controller/Front.php, Zend/Controller/Action.php, Doctrine/Record.php, Doctrine/Table.php

bardzo elastyczne toto :p

0

Jak mam być szczery to nie zdziwił bym się jak by nigdy nie powstał ;P Zresztą nie o to chodzi.

W działaniu jest zasadnicza.
Jak masz np kod$zm=new nazwa; nie możesz stwierdzić czy klasa jest widokiem, modelem czy "bóg wie czym". Żeby załadować odpowiednią bibliotekę musisz w autoload przeszukiwać wszystkie katalogi w których może być aż napotkasz na dany plik. W dodatku możesz mieć np plik modelu i widoku o tej samej nazwie i ni w 10 nie wiadomo co wczytać (tz będzie pierwsze znalezione = szczęśliwy traf). Jak masz nazwę klasy która dokładnie opisuje co masz wczytać od razu wiadomo czy to o co chodziło istnieje czy nie. Więc kod
$zm=new nazwa_class;dokładnie precyzuje plik do wczytania. Ma to liczne plusy których nie chce mi się wymieniać.

Pozostaje jeszcze rzeczywista nazwa pliku.
Mogła by wyglądać tak:
nazwa_class.php
i było by w porządku dało by się dojść po samej nazwie co to jest. Jednak w większości framework jest stosowana nazwa z kropką.

W przypadku nazwy uciętej nazwy z kropką np nazwa.class.php nazwa pliku nie pokrywa się z nazwą klasy z środka co stanowi duży minus.

Metoda mieszana jak już wcześniej wspomniałem wygląda dziwnie i jest długa ale daje większe możliwości i zapewnia zgodność z większości framework.


Re: cepa

Też fajna ewentualność. Będę się musiał nad tym głębiej zastanowić. Na razie co prawda nie pasuje do mojej koncepcji ale może coś tu wykombinuję:)

0

a konwencja, gdzie klasy zaczynasz od 'c', helpery od 'h', widoki od 'v' ?
np.: widok: vCostam, klasa: cJakasTam, helper: hInnyHelper, etc.

0

Szczerze mówiąc myślałem o tym. Jednak metoda ta daje pewną dwuznaczność zapisu. Np gdy nie ładujemy helpera widoku itp a nazwa jakiejś klasy przypadkiem zaczyna się na h może ona zostać potraktowana jako helper. Załadowanie nie tej biblioteki może to spowodować błąd, jednak nie w miejscu jej ładowania co jest dośc mylące. Brzmi to zdecydowanie bardziej dramatycznie niż jest w rzeczywistości jednak jest w tym trochę prawdy;P

0

Dobra z tą częścią sobie poradziłem:)

Mam jeszcze tylko jeden problem zbliżonej natury.
Czasami zdarza się że sposób wyświetlania definiujemy w osobnych funkcjach np .

function senduserinfoe($name,$age,$other)
{
  echo "User name: $name <br />Wiek: $age<br />Inne: $other";
}

Jak nazwać grupę funkcji która zajmuje się czymś takim ???
View odpada

0

mi to wyglada jak helper widoku, i dobrze ci radze unikaj robienia helperow w funkcjach tylko uzywaj do tego obiektow

0

źle to opisałem miałem na myśli obiekt/classe składającą się z wielu takich funkcji. Taka klasa miała by być odpowiedzialna za sposób prezentacji danych np

class nazwa_i_typ_którego_szukam
{

function senduUserTableRecord($name,$age,$other)
{
  echo "<tr><td>User name:</td><td> $name </td><td>Wiek: $age</td><td>Inne: $other</td><tr>";
}

function sendUserTableBegin()
{
  echo "<table>";
}

function sendUserTableEnd()
{
  echo "</table>";
}

}

Przykład pozostawia trochę do życzenia ale wydaje mi się że pokazuje o co chodzi.

0

Przepraszam a czym się różni taka klasa jak ta powyżej z wieloma funkcjami od kodu strukturalnego? :D Dodatkowo takie pomieszanie znaczników HTML z PHP i tekstem widocznym dla użytkownika wygląda co najmniej zabawnie ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1