2013-11-13 4 views
3

что я пыталсярасширения PHP, чтобы изменить поведение по умолчанию

Я прошел через следующие учебники PHP Extension: http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/http://php.webtutor.pl/en/2011/07/07/how-to-create-php-extensions-in-c-part-i-adding-simple-function/ И все они большие ресурсы для добавления новых функций.

Я создал несколько простых расширений, которые добавляют простые функции. В основном hello_world(). Я пробовал просматривать исходный код и все, но я просто не могу найти то, что мне нужно.

Что мне нужно

мне нужна помощь или точку в правильном направлении, как я могу изменить функциональность PHP. Я пытаюсь расширить синтаксис для foreach. Это больше возможностей для обучения, поэтому я думаю, что изменение синтаксиса для foreach - хорошая идея.

1) Как найти текущую реализацию foreach в текущем исходном коде PHP? 2) Как написать и расширить, чтобы изменить его?

Конец Цель

Каждый раз, когда я пишу массив, в котором я хочу уникальный набор чисел вместо того, чтобы числа в значениях и делать поиск в массив я положил их в ключах и установите значение как true. Когда я делаю foreach, я не забочусь о ключах. поэтому я хочу создать следующий синтаксис:

foreach ($myArray as $key =>) { 
    // Do stuff here  
} 

Любая помощь будет принята с благодарностью. Благодаря!

+0

Foreach (array_keys ($ MyArray) как $ ключ)? – Shazbot

+0

Расширение не может изменить основную грамматику языка ... Это похоже на ожидание введения нового слова, принять _floobarb_, чтобы изменить времена. –

+0

@EliasVanOotegem Это не так. Правда, расширение не может изменить поведение PHP, а не больше. (ответила 15 минут назад) – hek2mgl

ответ

2

Вы не можете изменить основное поведение PHP с помощью расширения. Если вы хотите изменить цикл foreach, вам необходимо изменить основные компоненты PHP и перекомпилировать его. Вам решать, что вам нужно изменить. (Это весело)

Однако вы можете просто сделать это:

foreach (array_keys($myArray) as $key) { 
    // Do stuff here  
} 
+0

Вот чего я боялся ... Спасибо за быстрый ответ. – chrislondon

+0

Что случилось с 'array_keys()'? – hek2mgl

+0

Разве это не увеличивает память, потому что она создает второй массив для цикла? – chrislondon

Смежные вопросы