Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.

3 Stron V  < 1 2 3 >  
Reply to this topicStart new topic
> Metaprogramowanie w PHP
skowron-line
post 15.10.2008, 15:05:40
Post #21





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


@MajareQ tu poczytaj.
http://wazniak.mimuw.edu.pl/index.php?titl...taprogramowanie
prostym przykładem może być utworzenie pliku zapis do jakiegoś echo i później zaincludowanie tego pliku. ( kiedyś ktoś taki przykład na forum napisał ).


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
michalkjp
post 17.10.2008, 11:14:00
Post #22





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Cytat(LoPMX @ 24.06.2008, 21:06:48 ) *
Prawda jest taka,

Ktoś kiedyś powiedział, że prawda jest jak du%^ - każdy ma własną winksmiley.jpg

Cytat(LoPMX @ 24.06.2008, 21:06:48 ) *
ze jest to czyste naciaganie, by nadarzac za trendem.

PHP od srodka jest kiepskim jezykiem, balaganiarskim. Ale skoro uwazasz, ze chcesz uzywac tak ubogiego i malo elastycznego API to... powodzenia.

Ktoś kiedyś powiedział, że złej baletnicy przeszkadza rąbek u spódnicy.

Bardzo lubię te dyskusje o wyższości jednego języka nad drugim. Weźmy na przykład takie C – jest to całkiem archaiczny język średniego poziomu, który od dawna nie nadąża za trendami. I co z tego? Ludzie w nim piszą systemy operacyjne.

Kiedyś Rafał Wysocki (linuksowy hacker) powiedział mi jak patrzy na te wszystkie języki (z pozycji cholernie dobrego programisty) "ważne jest to, żeby dało się zapisać algorytm". Reszta jest mało ważna winksmiley.jpg

Życzę miłego rozkminiania ezoterycznych problemów wyższości jednego języka nad drugim.
Go to the top of the page
+Quote Post
Sedziwoj
post 17.10.2008, 12:30:47
Post #23





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(michalkjp @ 17.10.2008, 12:14:00 ) *
Kiedyś Rafał Wysocki (linuksowy hacker) powiedział mi jak patrzy na te wszystkie języki (z pozycji cholernie dobrego programisty) "ważne jest to, żeby dało się zapisać algorytm". Reszta jest mało ważna winksmiley.jpg

A ja powiem cholernie ograniczony punkt widzenia, bo język jest dobry do tego do czego został stworzony, nikt normalny nie będzie pisał OS w Java, bo jest do czegoś innego, nit nie napisze całej aplikacji w C, bo to też nie o to chodzi (pomijam aplikacje specjalistyczne, gdzie wydajność to priorytet), Java i podejście obiektowe spełnia swoje zastosowanie jako możliwość szybszego tworzenia aplikacji, dla których wydajność nie jest priorytetem. Metaprogramowanie też sprawdzi się w pewnych miejscach, ale nie wszędzie. Języki się pojawiają, zmieniają po to aby sprawdzić różne możliwości zapisu programów i te lepiej spełniające swoje założenia przechodzą dalej. (np. pojawienie się Generics w Java, bo były bardzo użyteczne)


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Cysiaczek
post 17.10.2008, 13:30:03
Post #24





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@ 2 powyższe posty - Proszę nie robić offtopów


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
michalkjp
post 17.10.2008, 14:16:15
Post #25





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


@Cysiaczek

Ok, już nie będę (nie zwracaj uwagi na 3 poniższe zdania winksmiley.jpg)

@Systemy operacyjne w Javie

Takie systemy istnieją, działają i wcale nie piszą ich nienormalni ludzie. Oczywiście należy się zgodzić z tym, że jedne języki są lepsze do określonych zastosowań inne gorsze, ale nie należy wprowadzać żadnego językowego faszyzmu. Przetwarzanie formularza na stronie da się zrobić nawet z poziomu Pascala – wystarczy tylko umieć.

// Widzę że nie bardzo do Ciebie dociera to co się piszę. Może ostrzeżenie Cię czegoś nauczy.
// ~webdice
Go to the top of the page
+Quote Post
pawkow
post 20.10.2008, 23:05:13
Post #26





Grupa: Zarejestrowani
Postów: 76
Pomógł: 7
Dołączył: 30.09.2006

Ostrzeżenie: (0%)
-----


PHP Jak najbardziej pozwala na metaprogramowanie, podobnie jak każdy inny język który nie wymaga kompilacji plików źródłowych do poprawnego ich działania (tak sądzę, nie znam wszystkich tych języków).

Za "program" w PHP można uznać zbiór skryptów stanowiących jedną aplikację, która może (o czym wszyscy doskonale wiemy) zamieniać sama swoje pliki źródłowe. Często spotyka się aplikacje które przechowują dane (jak np. ustawienia) w swoich plikach źródłowych, będących podstawowymi plikami aplikacji. Aplikacje te umożliwiają zamianę tych danych w trakcie działania aplikacji (może się to odbywać bez ingerencji programisty).

Późno już jest więc może nie do końca zrozumiałem definicję metaprogramowania, pisze co myślę.
Go to the top of the page
+Quote Post
Sh4dow
post 21.10.2008, 14:38:22
Post #27





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Nie wiem czy dobrze zrozumiałem dość obszerny post nasty to to co jest miedzy nawiasami [] jest tylko opisem komentarzem. Na podstawie którego jest powiedzmy (tak jak w przykladzie powiedział) generowany plik WSDL czyli to powinno być zaliczane do meta programowania jeśli ja na postawie kawałka kodu oraz jego komentarza wygeneruje plik wymagany do jakiegoś działania, w tym wypadku tekże niech to będzie WSDL
  1. <?php
  2.  
  3. class Obj {
  4.    /**
  5.      *
  6.      * @return int
  7.      */
  8.    public function pobierzLicznik() {
  9.       //jakis tam kod
  10.   }
  11. }
  12. ?>


Na podstawie komentarza, a da sie go parsować i odczytać, mozna wygenerowac wsdl ktory bedzie opisywac metode pobierzLicznik i automatycznie opisywać ze zwraca liczbę całkowitą. Czy to nie bylo by już meta programowanie ? Jeśli dobrze zrozumiałem.

Nierozumiem dlaczego by to nazywać trendem. Co, jest to modne ? Tak jak kiedyś posiadanie swojego frameworka czy CMS'a ? To poprostu moim zdaniem czasami jest dość wygodne przy odpowiednim nakładzie pracy ale zeby nazywać to trendem.

Pozdrawiam.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Spawnm
post 21.10.2008, 14:48:24
Post #28





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




http://pl.wikipedia.org/wiki/Metaprogramowanie
Metaprogramowanie - jest techniką która umożliwia programom tworzenie lub modyfikację kodu innych programów (lub ich samych).


Tak więc oczywistym jest że PHP daj takie możliwości , np: tworzenie kodu JavaScript smile.gif
pobieramy nazwy grafik z folderu i dajemy je do pętli generującej zmienne js dla galerii js.
Go to the top of the page
+Quote Post
Sedziwoj
post 21.10.2008, 15:52:34
Post #29





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@Spawnm
Nie do końca o ten sens chodzi w tym temacie, chodzi o generowanie kody PHP przez PHP na podstawie jakiś metadanych. (taki ja sens tego widzę) Czyli robienie wiele nie robiąc dużo.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
bigZbig
post 21.10.2008, 17:43:02
Post #30





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Jeśli pod pojęciem metaprogramowanie rozumiemy "uzupełnianie" lub "wzbogacanie" kodu aplikacji już podczas wykonywania tego kodu to w php jest to jaknajbardziej możliwe. Służą do tego takie funkcje jak np. [b]create_function[/b] czy eval, a także Reflection API. Z mojego punktu widzenia metody magiczne takie jak __get, __set czy __call to też metaprogramowanie gdyż umożliwiają obsłużenie przez programistę przypadków, których nie może on z góry przewidzeć (uzależnionych np. od struktury danych), lub ma zwyczajnie ochotę na implementację mechanizmów uniwersalnych.

Rezultaty tego metaprogramowania mogą zostać "utracone" w chwili wykonania kodu lub też zapisane do późniejszego wykożystania. Przy pomocy PHP możemy wygenerować nowe fragmenty kodu a nawet przedefiniować już zdefiniowane przez nas klasy czy funkcje. Dla mnie jest to już metaprogramowanie. Możemy dyskutować, który język jest bardziej predystynowany do tego aby nazywać go królem metaprogramowania, ale chyba nie o ranking w tym wątku chodzi.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
bregovic
post 3.11.2008, 00:52:46
Post #31





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Jako ciekawostka, dzięki funkcjom lambda, od PHP5.3 będzie możliwe rozszerzanie klas o nowe metody - na żywo.
  1. <?php
  2. class Object {
  3.    private static $methods = array();
  4.  
  5.    public static function extend($name, $method) {
  6.        if (is_callable($method)) {
  7.            self::$methods[$name] = $method;
  8.        }
  9.    }
  10.  
  11.    public function __call($method, $arguments) {
  12.        if (isset(self::$methods[$method])) {
  13.            array_unshift($arguments, $this);
  14.            return call_user_func_array(self::$methods[$method], $arguments);
  15.        } else {
  16.            throw new Exception('Unknown method '.$method.' called.');
  17.        }
  18.    }
  19.  
  20.    public static function __callStatic($method, $arguments) {
  21.        if (isset(self::$methods[$method])) {
  22.            array_unshift($arguments, get_called_class());
  23.            return call_user_func_array(self::$methods[$method], $arguments);
  24.        } else {
  25.            throw new Exception('Unknown method '.$method.' called.');
  26.        }
  27.    }
  28. }
  29. ?>

Dzięki podobnemu rozwiązaniu zaimplementowałem lazy-loading danych z DB do moich modeli (a zwłaszcza kolekcji modeli). Oprócz tego, dzięki lambdom możliwe jest np napisanie metody 'each' dla kolekcji. Powyższą klasę można wykorzystać np tak:
  1. <?php
  2. class Foo extends Object {
  3. }
  4.  
  5. $method = function($one, $two) {
  6.    return $one + $two;
  7. };
  8.  
  9. Foo::extend('add', $method);
  10.  
  11. echo Foo::add(2, 2);
  12. // 4
  13. ?>


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
tuner
post 3.11.2008, 12:32:38
Post #32





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 10.12.2004

Ostrzeżenie: (0%)
-----


Cytat(bregovic @ 2.11.2008, 23:52:46 ) *
(...) Dzięki podobnemu rozwiązaniu zaimplementowałem lazy-loading danych z DB do moich modeli (a zwłaszcza kolekcji modeli). Oprócz tego, dzięki lambdom możliwe jest np napisanie metody 'each' dla kolekcji. (...)
Mógłbyś się podzielić kawałkami kodu przykładów? Zainteresowała mnie ta część postu i chętnie przeczytam więcej.

EDIT:
Zainteresowanych odsyłam do klasy Collection autorstwa bregovica:
Collection.php

Ten post edytował tuner 3.11.2008, 12:39:10
Go to the top of the page
+Quote Post
bigZbig
post 19.02.2009, 15:34:40
Post #33





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Wzbogacanie klas o dodatkowe metody jest od dawna możliwe i bez funkcji lambda http://www.garfieldtech.com/blog/php-magic-call


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
erix
post 11.04.2009, 19:42:50
Post #34





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Nie moge sie doczekac PHP 5.3 i pierwszego projektu ktory skusi sie na uzycie namespace

Nie skuszą się. Był na hostingach ongiś wielki ból, aby zainstalowano PHP5, niektóre są bardzo ospałe, jeśli chodzi i update bieżących wersji PHP, to myślisz, że ktoś sobie pozwoli na problemy wywołane nowymi funkcjami? Za rok od wprowadzenia przestrzeni nazw, to rozumiem, ale na pewno nie tak prędko.

Cytat
Co mi po tym ze stworze alias do danego namespace'a czy klasy? Wolalbym sobie zaimportowac namespace tak jak ma to miejsce w C++ (using namespace My\Full;) ...

Z tego, co mi wiadomo, to i tak była gorąca dyskusja właśnie w ekipie tworzącej interpreter, jakiego operatora używać do deklarowania przestrzeni nazw. tongue.gif Już nie pamiętam, na czym stanęło.

Cytat
Swoja droga... ciekaw jestem czego jeszcze mozemy sie spodziewac...

W sumie, to naprawdę wszystkiego - np. kiedyś był moduł MySQL zintegrowany, potem poleciał do rozszerzenia i znowu wraca do rdzenia...

Cytat
P.S. Jezeli uwazacie ten watek za ciekawy do dyskusji (zdaje sobie sprawe iz to nie jest raczej wlasciwe miejsce), to prosze o kontakt, zalozenie oddzielnego tematu, albo sam to zrobie i bedziemy mieli okazji do przedyskutowania tego.

Chętnie, ale zobaczymy, czy więcej osób podejmie dyskusje; jestem jak najbardziej "za".


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Morkai
post 14.04.2009, 21:45:10
Post #35





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 25.08.2005

Ostrzeżenie: (0%)
-----


Cytat(belliash @ 12.04.2009, 12:33:42 ) *
Pomijam fakt ze namespace musi byc zadeklarowany zaraz na poczatku pliku, gdzie wolalbym najpierw wpisac (...)
Pliki, do których użytkownik ma nie mieć dostępu umieszcza się poza public_html.
Cytat(belliash @ 12.04.2009, 12:33:42 ) *
(...) za akzdym razem trzeba pisac \CORE\[Klasa] albo zaliasowac sobie... use \CORE\[Klasa] as Klasa... jak dla mnie nie porozumienie - jakby nie mozna bylo wpisac np import CORE. Mozna by powiedziec - zmiast deklarowac namespace CORE - kernela wstawic w global scope - nie pomogloby. use \Klasa as Klasa sad.gif czyli dokladnie ten sam problem...
Nawet mając do dyspozycji przestrzenie nazw, nie powinieneś nazywać klas tak samo. Dodawanie as Klasa do use \Klasa jest równoznaczne z samym use \Klasa. Zaliasowanie wszystkich używanych klas pozwala szybciej zorientować się, jakie definiowana klasa ma zależności. Nie trzeba latać po całym pliku.
Z resztą jaki % czasu w porównaniu do napisania całej klasy zajmie Ci wpisanie usingów?
Cytat(belliash @ 12.04.2009, 12:33:42 ) *
Inny przyklad - kod zaczerpniety ze strony IBMa: (...)
Albo piszesz obiektowo albo strukturalnie.
Go to the top of the page
+Quote Post
Morkai
post 15.04.2009, 12:55:23
Post #36





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 25.08.2005

Ostrzeżenie: (0%)
-----


Cytat(belliash @ 14.04.2009, 21:16:53 ) *
Wytlumacz mi prosze co ma piernik do wiatraka?

  1. <?php
  2. defined(COS) or die('nie mozna uruchomic bezposrednio');
  3. ?>


Cytat(belliash @ 14.04.2009, 21:16:53 ) *
Po to sie uzywa namespace aby moc miec kilka kals o tej samej nazwie - jaka mam pewnosc ze nikt nie bedzie chcial polaczyc mojego projektu z innym projektem i ze nie wystapi konflikt nazw?

Po dodaniu przestrzeni nazw, pełna nazwa klasy to namespaceName\ClassName. Po to się dodaje nazwę projektu/firmy do ns, aby takie problemy nie wystąpiły. Jeżeli masz dwie klasy o takiej samej nazwię to znaczy, że robią to samo. Czy jedną z głównych cech OOP przestało być code reuse?

Cytat(belliash @ 14.04.2009, 21:16:53 ) *
I wytlumacz mi o jakie zaleznosci Ci chodzi bo nie bardzo rozumiem...

Zależności pomiędzy klasami. Jeżeli Foo korzysta z Bar i Baz, to od nich zależy.

Co do tego kodu. Nie wiem czy w alpha wyświetlał się ten błąd (może autor miał wyłączone wyświetlanie ostrzeżeń), ale PHP informuje, że trzeba dodać przestrzeń nazw przed wywołaniem funkcji
Cytat(PHP)
Warning: The use statement with non-compound name 'UtilsLeft' has no effect in /home/.../ns.php on line 8

Warning: The use statement with non-compound name 'UtilsRight' has no effect in /home/.../ns.php on line 11
I'm using my left hand!I'm using my right hand!
Fatal error: Call to undefined function whichHand() in /home/morkai/workspace/tests/ns.php on line 9

Tak samo jest w Pythonie. Chociaż Python pozwala na importowanie funkcji trzeba każdą zimportować każdą z osobna (co ma sens). Tobie się nie podoba, że trzeba importować klasy. Co by było jakbyś musiał importować funkcje ^^
Go to the top of the page
+Quote Post
mike
post 15.04.2009, 13:00:55
Post #37





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(Morkai @ 15.04.2009, 13:55:23 ) *
Po dodaniu przestrzeni nazw, pełna nazwa klasy to namespaceName\ClassName. Po to się dodaje nazwę projektu/firmy do ns, aby takie problemy nie wystąpiły. Jeżeli masz dwie klasy o takiej samej nazwię to znaczy, że robią to samo. Czy jedną z głównych cech OOP przestało być code reuse?
Ale bzdury. Ale bzdury.
Zasada Code Reuse nie ma tu najmniejszego znaczenia. Strzelasz bzdurnymi argumentami od czapy w stylu "Jeżeli masz dwie klasy o takiej samej nazwię to znaczy, że robią to samo."

Po to powstały przestrzenie nazw, żeby do nich pakować całe biblioteki czy projekty i nie martwić się, że Ci się, na przykład klasa Parser powtórzy.
Zajrzyj może do innych języków, na przykład do Javy. Dostrzeżesz śmieszność we własnych postach tongue.gif
Go to the top of the page
+Quote Post
erix
post 15.04.2009, 17:15:39
Post #38





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
powiedz mi jak na hostingu umiescic cos poza public_html?

Normalnie. Porządny hosting umożliwia Ci zapis plików poza public_html. Jeśli nie, to cóż... winksmiley.jpg Trzeba kombinować z Rewrite.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
bigZbig
post 15.04.2009, 20:40:31
Post #39





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Prawdą jest, że porządny hosting udostępnia katalog co najmniej o poziom wyżej public_html, ale jeśli nawet tak nie jest to można sobie poradzić używając podkatalogu z odpowiednim .htaccess - em. Pisanie w każdym pliku czegoś na kształt:
  1. <?php
  2. defined(COS) or die('nie mozna uruchomic bezposrednio');
  3. ?>

jest amatorszczyzną bo.
1. Trzeba pamiętać aby ten wpis znalazł się w każdym pliku.
2. Nie zabezpiecza to bibliotek zewnętrznych gdyż trzeba by dodać podobny wpis do każdego pliku, każdej zewnętrznej biblioteki np. Smarty, htmlpurifier, Swiftt, Zend itd.
3. Użycie plików z takim wpisem w innych projektach wymusza zdefiniowanie odpowiedniej stałej

Oczywiście tematem niniejszego wątku nie jest zabezpieczenie plików tak więc wracając do meritum sprostuję jeszcze, że w Pythonie nie trzeba wymieniać literalnie, każdej funkcji, którą chce się zaimportować, choć uważam to za w sumie dobrą praktykę.

Zgadzam się z moimi przedmówcami, którzy stoją na stanowisku, że ideą przestrzeni nazw jest wyeliminowanie problemów ze zdublowanymi nazwami klas lub funkcji. Programując często zmuszony jesten do tworzenia rozbudowanych nazw klas. Niestety php jak dotąd wymusza nadawanie nazw klasom i funkcją w odniesieniu do całej aplikacji. Stąd przedrostki typu smarty_, Zend_, My_ itp. O ile prostsze byłoby użycie krótkiej nazwy, która w danym kontekście byłaby jednoznaczna. Rozwiązaniem mają być namespace-y. Czytałem dokumentację dotyczącą namespace-ów w php i powiem Wam, że jak na razie to co tam piszą jest mało intuicyjne i nie jestem pewien czy mi się to podoba.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
Nattfarinn
post 11.05.2009, 16:16:09
Post #40





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Nie chcę specjalne marudzić, ale czy temat nie tyczy się czasem Metaprogramowania a nie zastosowań przestrzeni nazw wraz z rozwiązaniami nowego PHP?

Metaprogramowanie, to... dziwna rzecz. Wydaje mi się, że mniej więcej łapię założenia jakie kierują metaprogramowaniem. Umyka mi za to trochę sens takich rozwiązań... Nie potrafię sobie wyobrazić sytuacji w której użycie metapr. byłoby conajmniej wskazane (i optymalne). Generowanie kodu który w niedalekiej przyszłości miałby zostać wykonany to (wybaczcie, widocznie nie mam aż tak wielkiej wyobraźni) przerost formy nad treścią. Chyba, że ten temat jest czysto teoretyczny i pomija pytanie "po co?" na rzecz "czy da się?" bo nie sądzę, żeby skrypt sam był w stanie uzupełnić sie o newralgiczne elementy. Hmm, ORM?

I tak mnie właśnie coś ruszyło... Czy rozwiązanie Zend Framework odnośnie klas tablic objętych relacją i wywołań właściwie nieistniejących metod finderów podpada pod Metaprogramowanie? Chodzi mi o wywołanie metody:

  1. <?php
  2. $tabela = new MojaTabela();
  3. $wynik = $tabela->findParentImieByNazwisko('Kowalski');
  4. ?>


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post

3 Stron V  < 1 2 3 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 03:51