Tämä artikkeli puolustelee PHP:n namespace-syntaksia ja pitää sitä ihan kohtuullisena saavutuksena, kun huomioidaan millaiset rajoitukset PHP:n aiempi historia asettaa syntaksille. Minusta taas PHP:stä on tulossa niin ruma ja ikävä, että haluan pyrkiä eroon sen käytöstä kokonaan.

PHP:n perusongelmahan on siinä, että kieli on kehittynyt hiljalleen vuosia kestäneen evoluution myötä. Syntaksia on viritelty sitä mukaa, kun uusia ominaisuuksia on tarvittu. Kehityskaari muistuttaa ehkä vähän Perliä, johon niinikään ympättiin objektiorientoituneet toiminnot jälkeenpäin. Perlissäkin ne ovat sekavia eikä niitä ole kiva käyttää.

PHP:n pahin virhe oli alkujaan käyttää pistettä (.) merkkijonojen yhdistelyoperaattorina. Sen vuoksi objektien attribuutteja ja metodeita kutsutaan nyt "->"- ja "::"-erottimilla, ja namespaceille piti ottaa käyttöön erottimeksi kenoviiva (). Useimmissa muissa suosituissa kielissä (kuten Java, C#, Python) piste hoitaa kaikki nämä erottimen tehtävät, jolloin syntaksi on paljon helppolukuisempaa ja siistimpää.

Pahimmillaan PHP voi siis näyttää tältä:

somepackage\someclass::someobject->someattribute

Kun sama näyttäisi vaikkapa Pythonissa tältä:

somepackage.someclass.someobject.someattribute

Sekava syntaksi on toki vain yksi PHP:n heikkouksista. Sillä koodaaminen on muutenkin kovin verboosia ja työlästä. Vähän kuten Perl, PHP sopii parhaiten yksinkertaisiin pieniin skripteihin, joissa vain kutsutaan muutamaa funktiota. Laajojen ohjelmistojen ja kirjastojen kehittämisessä se alkaa tökkiä aika äkkiä.

Published 13.8.2009