Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kompilowanie własnych rozszerzeń i funkcji
Forum PHP.pl > Forum > PHP > Pro
Cysiaczek
Witam,

Chciałbym rozpocząć dyskusję o samodzielnym rozszerzaniu php. Nie raz i nie dwa, miałem ochotę jakąś funkcję wkompilować bezpośrednio w php, aby nie dołączać jej w każdym projekcie. Rodzi to jednak problemy z przenośnością kodu. trzeba by zbudować własne rozszerzenie które potem musiałoby być dołączone do produkcyjnej wersji php, a nie każdy serwer obsługuje dynamiczne ładowanie bibliotek i mamy impas. Jeśli kiedyś pisaliście własne rozszerzenie, to jak to potem z tym było? Warto było?

Zapraszam do dyskusji.

p.s. Temat nie dotyczy przewagi i "lepszości" alternatywnych sposobów ładowania funkcji - list include, autoloaderów.
batman
Nie miałem przyjemności pisać własnych rozszerzeń do PHP ale miałem wątpliwą przyjemność pracować na takim rozszerzeniu. Przyznam, że długi czas pracowałem na tym rozszerzeniu i nie wiedziałem nawet o tym. Dopiero jak padł dysk i trzeba było wszystko stawiać od zera, okazało się, że kiedyś ktoś takie coś napisał. Odnalezienie tego zajęło masę czasu, który można było poświęcić na coś zupełnie innego.
Inną kwestią jest praktycznie zerowa przenaszalność kodu. O ile ktoś pracuje na własnych / firmowych serwerach, to nie ma problemu, jednak jeśli jakiś klient sobie zażyczy, by aplikacja stała na jego serwerach, zaczyna się zabawa. Jeśli klient jest kumaty, to szybko dojdzie do porozumienia, jednak jeśli klient należy do grupy upierdliwych, to minie wiele czasu, nim da się go przekonać do "nieautoryzowanych" rozszerzeń.
Strzałek
Od razu nasuwa mi się pytanie - o jakie rozszerzenia chodzi?

Cytat
Nie raz i nie dwa, miałem ochotę jakąś funkcję wkompilować bezpośrednio w php, aby nie dołączać jej w każdym projekcie. Rodzi to jednak problemy z przenośnością kodu.


Czego Ci brakowało? Co chciałeś sobie wkompilować?

Pytam z czystej ciekawości.
Cysiaczek
Funkcje, które ułatwiają życie i którą są typowo narzędziowe. np. funckja list_methods(), albo trywialna funkcja wyświetlająca dane tablicy/obiektu
  1. <?php
  2. function print_pre($data)
  3. {
  4. print '<pre>';
  5. print_r($data);
  6. print '</pre>';
  7. return true;
  8. }
  9. ?>

Dlaczego mam ją includować w każdym projekcie? Gdyby sobie siedziała od początku w jadrze php, nie byłoby takiej konieczności.
Z większych, to np. monitor postępu uploadu, który działa bardzo fajnie, ale mało kto z niego może skorzysta, bo na produkcyjnych nie da się go załadować, zazwyczaj ze względów bezpieczeństwa. Tak samo fajnie byłoby dodać własne iteratory - to przyśpieszyłoby ładowanie aplikacji.
Może i są to pierdoły, ale jeszcze bym np. chciał dodać własne zestawy funkcji do parsowania różnych formatów plików.

Pozdrawiam.
Strzałek
Racja. Jeżeli chodzi o "pierdoły" do debugowania typu print_r etc. to rzeczywiście może być nie głupi pomysł ponieważ swój warsztat masz wyposażony w to rozszerzenie i sobie używasz f-cji w projektach.

Jednak temat właściwie się skończył zanim się zaczął ponieważ:

Cytat
który działa bardzo fajnie, ale mało kto z niego może skorzysta, bo na produkcyjnych nie da się go załadować
empathon
Nie.
Takie rozwiązanie wybieramy dla specyficznych projektów. Gdy wiadomo, że aplikacja i tak wymaga serwera dedykowanego i zawsze będziemy mieli możliwość wykorzystać własne rozszerzenie. Przykład podany przez cysiaczka funkcji print_pre w takim wypadku całkowicie mija się z celem.
Załóżmy jednak, że nasza aplikacja mocno eksploatuje nasze Iteratory czy wspomniane w innym temacie sumowanie stringów. Zaimplementowanie w cpp takiego StringBuilder z pewnością przełoży się na wzrost wydajności.
Cysiaczek
Myślałem raczej, że dyskusja pójdzie w stronę tego, jakie kto ma doświadczenia w rozszerzaniu php, czy w modyfikowaniu jego jądra. Jakie kłopoty napotkał, jaka była przydatność takich rozwiązań?

Pozdrawiam.
empathon
Cytat(Cysiaczek @ 13.05.2008, 19:29:57 ) *
Myślałem raczej, że dyskusja pójdzie w stronę tego, jakie kto ma doświadczenia w rozszerzaniu php, czy w modyfikowaniu jego jądra. Jakie kłopoty napotkał, jaka była przydatność takich rozwiązań?

Pozdrawiam.

Tworzenie własnego forka języka programowania jest całkowicie pozbawione sensu. Nikt o zdrowych zmysłach tego nie zrobi bo dużo sensowniej i łatwiej jest wybrać inna technologie. Jedyne o czym możemy rozmawiać to pisanie rozszerzeń.

Jak napisać własne rozszerzenie: http://devzone.zend.com/node/view/id/1021
Sedziwoj
Cytat(Cysiaczek @ 13.05.2008, 14:35:02 ) *
Funkcje, które ułatwiają życie i którą są typowo narzędziowe. np. funckja list_methods(), albo trywialna funkcja wyświetlająca dane tablicy/obiektu

A to już nie lepiej xdebug i var_dump()?

(tak tylko na myśl mi się rzuciło, bo sam jakoś nie widzę, aby w projektach nie dla siebie, korzystać z takich niestandardowych rzeczy, chyba że to bardzo specyficzny projekt)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.