Posts Tagged ‘macro’

Nowości z php.internals – makra

Posted in php, programowanie on December 27th, 2010 by Wojciech Soczyński – 4 Comments

Kilka dni temu, Mathias Grimm, zgłosił na grupie php.internals propozycję dodania makr preprocesora do PHP. Miały by działać one analogicznie jak te w C, z wyjątkiem tego, że były by deklarowane za pomocą funkcji MACRO(‘nazwa_makra’,’jakas_tresc_makra’). Propozycja nie spotkała się raczej z entuzjastycznym przyjęciem. Oponenci argumentowali, że z racji na dynamiczną naturę języka dodanie makr nie wnosi żadnej nowej jakości i tylko zaciemnia kod dla osób nie zaznajomionych z nim. Wobec tego propozycja raczej nie przejdzie, chociaż widzę, że dyskusja się dość rozwinęła. Przy okazji tej dyskusji wyszło kilka ciekawych rzeczy, np. że jest rozszerzenie o nazwie “prep“, które tą obsługę wprowadza natywnie, oraz również mająca podobną funkcjonalność implementacja w czystym php. Z innych wartych odnotowania spraw, dowiedzieć się można, że używa się też gcc do takich rzeczy w formie:

<?php
#define PF private function
#define SCOPE_CLASS(x) class MyProject_ ## x

class UseMacro
{
     PF preSave($object)
     {
        //...
     }

}

SCOPE_CLASS(Internal)
{

}
?>

taki kod następnie należy przepuścić przez gcc komendą:

gcc -Mcpp -E - - < in.php > out.php

Widać kreatywność ludzka nie zna granic. Tak czy inaczej, ja osobiście uważam, że makra w php są zbędne, natomiast sądzę, że zamiast nich przydało by się wsparcie api dla rzeczy, które w tej chwili wykonuje się przy pomocy evala, np. anonimowe klasy, czy dynamiczne proxy.

Ciekaw jestem, jakie jest Wasze zdanie na ten temat ?