Debreceni Egyetem Informatikai Kara által rendezett 5. Informatikai Szakmai Napok rendezvényen kollégánk Zsíros Szabolcs "Professzionális PHP fejlesztés
Symfony frameworkkel" címmel tartott előadást.
Az előadás anyaga elérhető itt: Symfony
A következő címkéjű bejegyzések mutatása: PHP. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: PHP. Összes bejegyzés megjelenítése
2010. november 15., hétfő
2010. március 10., szerda
PHP programozókat keresünk
Frissítve: 2010-03-23
Elvárások:
* PHP 4 és PHP 5 alapos ismerete
* Joomla vagy valamely PHP MVC framework ismerete
* Angol nyelvtudás
Előny:
* Javascript, CSS ismerete
* SQL tapasztalat
Amit kínálunk:
* Versenyképes jövedelem
* Nemzetközi projektekben való részvétel
* Barátságos munkahely Debrecenben
Jelentkezés:
Bessenyei Zsolt
epam.debrecen kukac gmail.com
Elvárások:
* PHP 4 és PHP 5 alapos ismerete
* Joomla vagy valamely PHP MVC framework ismerete
* Angol nyelvtudás
Előny:
* Javascript, CSS ismerete
* SQL tapasztalat
Amit kínálunk:
* Versenyképes jövedelem
* Nemzetközi projektekben való részvétel
* Barátságos munkahely Debrecenben
Jelentkezés:
Bessenyei Zsolt
epam.debrecen kukac gmail.com
2010. február 17., szerda
PHP 4 vs PHP 5, 2. rész
Az első rész: http://epam-debrecen.blogspot.com/2010/02/php-4-vs-php-5-1-resz.html
Egy másik gyakori kódtípus, ami nem ugyanúgy viselkedek a különböző verziókban:
Pl. adatbázisból kapunk egy halom adatot, ahol a rekordok között szülő-gyermek( 1-n ) viszony van, és szeretnénk egy egyszerűen bejárható fát építeni belőlük minél kisebb költséggel. Erre a problémára adnak a referenciák egy lineáris időben futó, kis költségű lépésekből álló megoldást.
A PHP manualra jellemző, hogy a referenciák felhasználási területei közül pont egy olyat említ, amivel az objektum metódusainak megkerülésével nyúlhatunk hozzá egy taghoz. Rossz szokás, ami az esetek 95%-ában csak ront a kódon:
Az igazi szépsége a dolognak, hogy private tagokhoz is hozzá lehet férni ezzel a módszerrel :)
B.J.
Egy másik gyakori kódtípus, ami nem ugyanúgy viselkedek a különböző verziókban:
class Category {
var $id;
var $parentId;
var $children;
function Category( $id, $parentId=0 ) {
$this->id = $id;
$this->parentId = $parentId;
}
}
$categories[1] = new Category( 1 );
$categories[2] = new Category( 2, 1 );
$categories[3] = new Category( 3, 1 );
$categories[4] = new Category( 4, 2 );
$categories[5] = new Category( 5, 3 );
foreach ( $categories as $id=>$category ) {
// Az újabb verziók automatikusan referencia
// szerinti átadást használnak:
$categories[$category->parentId]->children[$id] = $categories[$id];
// A régebbiekben ezt nekünk kell kényszerítenünk:
$categories[$category->parentId]->children[$id] = &$categories[$id];
}
Pl. adatbázisból kapunk egy halom adatot, ahol a rekordok között szülő-gyermek( 1-n ) viszony van, és szeretnénk egy egyszerűen bejárható fát építeni belőlük minél kisebb költséggel. Erre a problémára adnak a referenciák egy lineáris időben futó, kis költségű lépésekből álló megoldást.
A PHP manualra jellemző, hogy a referenciák felhasználási területei közül pont egy olyat említ, amivel az objektum metódusainak megkerülésével nyúlhatunk hozzá egy taghoz. Rossz szokás, ami az esetek 95%-ában csak ront a kódon:
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
// $myValue is a reference to $obj->value, which is 42:
$myValue = &$obj->getValue();
$obj->value = 2;
// prints the new value of $obj->value, i.e. 2.
echo $myValue;
Az igazi szépsége a dolognak, hogy private tagokhoz is hozzá lehet férni ezzel a módszerrel :)
B.J.
Címkék:
PHP
2010. február 16., kedd
PHP 4 vs PHP 5, 1. rész
Aki PHP-val foglalkozik már megszokhatta, hogy a legtöbb projekten a host korlátai miatt nem használhatja a legújabb verziókat. Különösen igaz ez a legacy fejlesztésekre, ahol gyakran még a 4.x verziókkal kell beérni, mivel az átállás sok helyen nehezen észlelhető bugokat okozna. Az egyik ügyfelünk rendszere is részben 4.x verziójú.
A legegyszerűbben észlelhető probléma rengeteg kényelmi funkció (file_put_contents, paraméterezhető microtime és a többiek) hiánya. Ez kényelmetlen ugyan, de hamar kiküszöbölhető. Valamivel nehezebb hozzászokni az interfészek, absztrakt osztályok, láthatósági szintek és osztályszintű statikus változók hiányához.
Az egyik legkevésbé nyilvánvaló, viszont fontos változás a paraméterek átadásának módja. Az újabb verziók skalárokat és a tömböket érték, minden mást referencia szerint adnak át, míg a régiek az érték szerinti átadást használják objektumok esetén is. Ez legelőször valószínűleg Singletonok használatánál tűnik fel, egy bosszantó és nehezen észrevehető bug formájában:
Ez a kód átalakítva, hogy régi phpban is ugyanaz legyen a végeredmény:
B.J.
A legegyszerűbben észlelhető probléma rengeteg kényelmi funkció (file_put_contents, paraméterezhető microtime és a többiek) hiánya. Ez kényelmetlen ugyan, de hamar kiküszöbölhető. Valamivel nehezebb hozzászokni az interfészek, absztrakt osztályok, láthatósági szintek és osztályszintű statikus változók hiányához.
Az egyik legkevésbé nyilvánvaló, viszont fontos változás a paraméterek átadásának módja. Az újabb verziók skalárokat és a tömböket érték, minden mást referencia szerint adnak át, míg a régiek az érték szerinti átadást használják objektumok esetén is. Ez legelőször valószínűleg Singletonok használatánál tűnik fel, egy bosszantó és nehezen észrevehető bug formájában:
class Singleton {
function getInstance() {
// PHP 4-ben ez a legegyszerűbb módja
// az instance nyilvántartásának
static $instance;
if ( !$instance ) {
$instance = new Singleton();
$instance->test = "A";
}
return $instance;
}
}
$temp = Singleton::getInstance();
$temp->test = "B";
// PHP 5 esetén B lesz, különben A.
print Singleton::getInstance()->test;
Ez a kód átalakítva, hogy régi phpban is ugyanaz legyen a végeredmény:
class Singleton {
// Jelezzük, hogy a metódus az eredményt
// referencia szerint adja vissza
function &getInstance() {
static $instance;
if ( !$instance ) {
$instance = new Singleton();
$instance->test = "A";
}
return $instance;
}
}
// A visszatérési értéket referencia szerint rendeljük változóhoz
$temp = &Singleton::getInstance();
B.J.
Címkék:
PHP
2010. január 31., vasárnap
PHP programozókat keresünk
Frissítve: 2010-02-17
Feladat:
* Külföldi ügyfelünk meglévő site-jának továbbfejlesztése 4-5 fős csapat részeként
Elvárások:
* PHP 4 és PHP 5 alapos ismerete
* Valamely PHP MVC framework ismerete
* Angol nyelvtudás
Előny:
* Javascript, CSS ismerete
* SQL tapasztalat
Amit kínálunk:
* Versenyképes jövedelem
* Nemzetközi projektekben való részvétel
* Barátságos munkahely Debrecenben
Jelentkezés:
Bessenyei Zsolt
epam.debrecen kukac gmail.com
Feladat:
* Külföldi ügyfelünk meglévő site-jának továbbfejlesztése 4-5 fős csapat részeként
Elvárások:
* PHP 4 és PHP 5 alapos ismerete
* Valamely PHP MVC framework ismerete
* Angol nyelvtudás
Előny:
* Javascript, CSS ismerete
* SQL tapasztalat
Amit kínálunk:
* Versenyképes jövedelem
* Nemzetközi projektekben való részvétel
* Barátságos munkahely Debrecenben
Jelentkezés:
Bessenyei Zsolt
epam.debrecen kukac gmail.com
Címkék:
PHP
2009. december 10., csütörtök
PHP fejlesztőt keresünk
Egyik csapatunk bővítéséhez PHP fejlesztőt keresünk! A PHP mellett Java tudás előny!
Címkék:
PHP
2009. december 2., szerda
PHP Symfony: Egy jól komponált keretrendszer, 2. rész
A srácok a Sensio Labsnál nem csak a Symfony további javításán és kiegészítésén törik a fejüket, de a PHP-s közösség számára elérhetővé tették a Symfony néhány alkotóelemét, többek közt a zseniális templating rendszerét, és a dependency injection containerét is.
A rendszer ajánlható mindenkinek, akinek egy jó, robosztus, széleskörűen támogatott, nagy közösséggel bíró környezetben akarja készíteni mindennapi kódját.
A napokban jött ki az 1.3-as, és az 1.4-es verzió. A kettő között a különbség az 1.4-es verzió backward compatibility opciójának hiánya az 1.0-s verzió felé. Ez egyben azt is jelzi, hogy az 1.4 LTS verziónak lett tervezve, így aki új projectbe kezd, annak érdemes ezt a verziót választania.
Ízelítőnek érdemes megnézni azt a néhány screencastot ami néhány alapvető szolgáltatást hivatott bemutatni:
http://www.symfony-project.org/screencast/cart
http://www.symfony-project.org/screencast/admin-generator
Aztán ha megjött az étvágy, irány a tutorial, illetve az install guide...
További infó:
http://www.symfony-project.org/
http://components.symfony-project.org/
Az EPAM debreceni iroda fejlesztői számára élmény ezzel a frameworkkel dolgozni!
Zs.Sz.
A rendszer ajánlható mindenkinek, akinek egy jó, robosztus, széleskörűen támogatott, nagy közösséggel bíró környezetben akarja készíteni mindennapi kódját.
A napokban jött ki az 1.3-as, és az 1.4-es verzió. A kettő között a különbség az 1.4-es verzió backward compatibility opciójának hiánya az 1.0-s verzió felé. Ez egyben azt is jelzi, hogy az 1.4 LTS verziónak lett tervezve, így aki új projectbe kezd, annak érdemes ezt a verziót választania.
Ízelítőnek érdemes megnézni azt a néhány screencastot ami néhány alapvető szolgáltatást hivatott bemutatni:
http://www.symfony-project.org/screencast/cart
http://www.symfony-project.org/screencast/admin-generator
Aztán ha megjött az étvágy, irány a tutorial, illetve az install guide...
További infó:
http://www.symfony-project.org/
http://components.symfony-project.org/
Az EPAM debreceni iroda fejlesztői számára élmény ezzel a frameworkkel dolgozni!
Zs.Sz.
PHP Symfony: Egy jól komponált keretrendszer, 1. rész
Az előző projectjeink egyikén, mely PHP-Java hibrid volt (PHP frontend, Java Webservice backend) Symfony-t használtunk PHP keretrendszernek. Konkrétan 1.0-ás verziót, ami bár már lassan három éves, még mindig jól tartja magát a többi framework között.
Az alap filozófia azóta is vajmi keveset változott: adott egy nagyon jól használható MVC framework, AJAX supporttal, admin felület generálással (a'la Ruby on Rails, Groovy on Grails, etc.), és sok-sok pluginnel, amelyekkel a legtöbb dolgot pikk-pakk össze lehet pakolni.
Az 1.0-ás verzió alapból Propel-t használt ORM réteg gyanánt, annak is az 1.2-es verzióját, aminek a Creole-os alapja kis performancia-veszteséget okozott, de egyrészt a Symfony 1.2-es verziója óta a Propel-t update-elték 1.3-asra (ami már PDO-t használ adatbázis absztrakcióra), másrészt (sokak örömére) out-of-the-box tartalmaz Doctrine-t is, ráadásul alapértelmezettként. Persze a Doctrine hiánya korábban sem volt akadály a Symfony-t használni akaróknak, pluginként azt is könnyen összepászító a keretrendszerrel.
A Prototype Javascript framework is megtalálható a Symfony-ban már kezdetek óta (a rendszer Javascript helperei is ezen alapulnak), de ha éppen nem ezzel szimpatizálunk, akkor (mondani sem kell) a pluginok között találhatunk jQuery, YUI, Ext, Dojo librarykat segítő kiegészítőket is.
Zs.Sz.
Az alap filozófia azóta is vajmi keveset változott: adott egy nagyon jól használható MVC framework, AJAX supporttal, admin felület generálással (a'la Ruby on Rails, Groovy on Grails, etc.), és sok-sok pluginnel, amelyekkel a legtöbb dolgot pikk-pakk össze lehet pakolni.
Az 1.0-ás verzió alapból Propel-t használt ORM réteg gyanánt, annak is az 1.2-es verzióját, aminek a Creole-os alapja kis performancia-veszteséget okozott, de egyrészt a Symfony 1.2-es verziója óta a Propel-t update-elték 1.3-asra (ami már PDO-t használ adatbázis absztrakcióra), másrészt (sokak örömére) out-of-the-box tartalmaz Doctrine-t is, ráadásul alapértelmezettként. Persze a Doctrine hiánya korábban sem volt akadály a Symfony-t használni akaróknak, pluginként azt is könnyen összepászító a keretrendszerrel.
A Prototype Javascript framework is megtalálható a Symfony-ban már kezdetek óta (a rendszer Javascript helperei is ezen alapulnak), de ha éppen nem ezzel szimpatizálunk, akkor (mondani sem kell) a pluginok között találhatunk jQuery, YUI, Ext, Dojo librarykat segítő kiegészítőket is.
Zs.Sz.
Címkék:
JavaScript,
ORM,
PHP,
Symfony
2009. november 26., csütörtök
Reklámok a keresőkben: PHP és NuSOAP
Egyik csapatunk olyan alkalmazást fejleszt, amely az ügyfél PHP-s rendszerét univerzális kereső reklám (Search Engine Advertising) motorral egészíti ki. Ezen motor segítségével kanonikus alakra hozott adatok alapján bármilyen SOAP XML generálható és az adott szolgáltatónak (Google - AdWords, MSN - AdCenter, Yahoo - EWS) elküldhető.
A feladat szépsége az, hogy csak egyetlen UI felületet kell felparaméterezni, mindig csak ugyanazokat az inputokat megadva, majd a motor ezeket az adatot felhasználva egy saját formátumot hoz létre, amiket egy rekurzív algoritmus XML-lé alakít.
Minden szolgáltatónak definiáltuk az XML struktúráit: milyen XML-t fogad és ad vissza, amit a PHP környezetben inkább ismert YML formátumú fájlokban írtuk le. A motor ezt a leírót felhasználva állítja elő a megfelelő XML-eket az input adatokból.
Az ügyfél ezután pár kattintással célzott reklám kampányokat generálhat a hírdetési piac minden nagy szereplőjének a rendszerébe.
M.I.
A feladat szépsége az, hogy csak egyetlen UI felületet kell felparaméterezni, mindig csak ugyanazokat az inputokat megadva, majd a motor ezeket az adatot felhasználva egy saját formátumot hoz létre, amiket egy rekurzív algoritmus XML-lé alakít.
Minden szolgáltatónak definiáltuk az XML struktúráit: milyen XML-t fogad és ad vissza, amit a PHP környezetben inkább ismert YML formátumú fájlokban írtuk le. A motor ezt a leírót felhasználva állítja elő a megfelelő XML-eket az input adatokból.
Az ügyfél ezután pár kattintással célzott reklám kampányokat generálhat a hírdetési piac minden nagy szereplőjének a rendszerébe.
M.I.
2009. november 17., kedd
Olasz meló
Kollégánk pár napot Rómában töltött az egyik ügyfél kérésére. A munka Java és PHP kódolás, egyelőre a PHP oldal erősítése van tervezve, akár lehet jelentkezni is!
Szerencsére jutott idő néhány fényképet is készíteni:
A Colosseum éjjel és nappal:


A Vatikán múzeum és a Szent Péter bazilika:


Úgy látszik hazafelé már sietős volt az út:
Szerencsére jutott idő néhány fényképet is készíteni:
A Colosseum éjjel és nappal:

A Vatikán múzeum és a Szent Péter bazilika:
Úgy látszik hazafelé már sietős volt az út:
Feliratkozás:
Bejegyzések (Atom)
