Saturday 28 January 2006, 03:49
Considérations nocturne sur PHP
By Geoffrey - Geekeries - Permalink
Souvent le week end, je fais une nuit blanche du samedi au dimanche pour travailler. Bon ok, là on est la nuit de vendredi à samedi, et je vais pas tarder à aller me coucher, mais quand même. Bon enfin de toute façon c'est pas le sujet. Le truc, c'est que du coup je suis obligé de me taper la compagnie de Christophe, et je crois que finalement, c'est avec lui que j'ai le plus de discussions en rapport avec le nom du chan sur lequel on traine (#phpmafia (d'ailleurs, note pour plus tard: renouveler phpmafia.net, ça urge)).
On va commencer par parler du chroot. En gros, j'ai émis l'idée qu'une fonction chroot builtin serait utile. Elle existe, mais ne fait pas exactement ce que je veux, ou du moins pas comme je le veux. En l'état actuel des choses, elle execute un vrai chroot, et n'est donc utilisable qu'avec les droits root, ce qui est bien, mais pas top. Le but ultime serait d'éviter tout risque de faille du type remote file access, alors si c'est pour me taper a coté de ça des remote code execution with privilege escalation, ben ça perd de son interêt.
Deuxième challenge, implémenter la structure with() en PHP. Pour ceux qui ne connaissent pas, un petit dessin en javascript:
with(document) { getElelementById('foo'); }
Bon, l'exemple que je viens de donner ne sert a rien, mais je pense qu'on comprend tout de suite le but de la structure sus-citée. J'aimerai donc pouvoir disposer de la même chose en PHP. Etant donné que je n'ai pas les compétences C requises, la seule solution qu'il me reste est de l'implémenter d'une manière ou d'une autre en PHP. C'est d'autant plus complexe que je m'impose le cahier des charges simples mais strict suivant:
- Conserver les références
- Ne pas casser la coloration syntaxique
- Ne pas avoir une syntaxe trop tarabiscotée
Ce qui exclut une solution du genre:
$object = new Object(); $with = array('method();', 'autremethode();' 'foo = "bar"'); foreach($with as $item) { eval('$object->' . $item); }
Puisque ça casse la coloration syntaxique. J'ai pensé a un truc genre:
function foo() { method(); foo = 'bar'; } with(new Object, 'foo');
Mais j'ai des doutes sur la faisabilité de la chose. A voir si on peut en tirer quelque chose via l'API de Réflexion (décidemment je l'aime bien celle là).
Dernière chose, on aimerait bien avoir des trucs genre bash, par exemple pouvoir faire:
require_once('header-*.php'); require('{foo,bar}.php');
Voilà voilà, petit papa noël, si tu passes par là...
2 comments
(heureusement que je suis là moi)
et t'arriverais pas a faire que -> devienne . pour les objets? :)
This post's comments feed