Почему встроенные функции в PHP называются так случайным образом?

Кажется, что нет никакого реального шаблона для того, как названы функции, str_replace, strrpos, strip_tags, stripslashes - только некоторые.

Почему это так?

EDIT - это не означало, что это сообщение типа "тролль" - это то, что я думаю каждый раз, когда я использую этот язык!

Ответ 1

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

Небольшое отклонение, но помимо проблем с названием функций другой неудачный побочный эффект органического роста языка является очевидной несогласованностью в упорядочении аргументов, например. рассмотрим функции in_array и strstr:

bool in_array (mixed $needle, array $haystack [, bool $strict])

string strstr (string $haystack, mixed $needle [, bool $before_needle=false])

Как ни странно, PHP, похоже, внутренне согласуется с этими упорядочениями в том, что все строковые функции, по-видимому, используют $haystack, $needle, в то время как функции массива - это наоборот, но это может немного привыкнуть к кому-то новому для PHP, Там есть хорошая статья на ExpressionEngine, более подробно описывающая эту конкретную причуду, а также в списке ошибок PHP.

По мере созревания языка существуют различные попытки реализовать более жесткое и последовательное соглашение об именах - из Документация по Zend Framework:

Имена функций всегда должны начинаться с строчной буквы. Когда имя функции состоит из более чем одного слова, первая буква каждого нового слова должна быть заглавной. Это обычно называется форматированием "camelCase".

filterInput()

getElementById()

Для немного другого, из 20 возможных причин, почему имена и параметры функций PHP странны:

  • PHP склеивает API и людей вместе, а иногда это становится беспорядочным

  • PHP-функции были разработаны при многих обстоятельствах, иногда пьяны

  • Алгоритм именования функций PHP по-прежнему остается секретом и не может быть взломан.

  • PHP решил дать людям что-то интересное, чтобы жаловаться/блог/смеяться о

  • У PHP есть другие проблемы для решения

Ответ 2

Исторически многие из функций являются прямыми картами для своих копий C, поэтому из-за этого возникает много странностей приписывания и упорядочивания аргументов в PHP.

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

Ответ 3

Обратная совместимость и отсутствие пространств имен в сочетании с оттоком языка.

Ответ 4

Потому что язык вырос за последние 14 лет с "Личной домашней страницы" до одного из самых популярных языков реализации сайта. Никто не планировал выполнять все эти функции; они были добавлены по очереди по мере необходимости.

Ответ 5

Ответ - это Evolution или Unintelligent Design. Я не уверен, что;)

Ответ 6

Для обратной совместимости с большим количеством языков revs

Ответ 7

Это кажется немного тролль-у. Однако для обратной совместимости.

PHP6 будет обращаться за помощью для решения этих проблем, а также для обеспечения полной поддержки UTF-8.

Ответ 8

PHP является "старым", быстрорастущим, открытым исходным кодом script. Именование - это всего лишь вопрос долгой истории... Нет никакой "академической" компании за PHP, как SUN за Java, которая контролирует именование...

Ответ 9

Первоначально PHP был просто языком сценариев без объектно-ориентированной поддержки (PHP 3), поэтому имена функций, используемые в PHP до версии 3 и 4, в основном основаны на синтаксисе PERL. Но PHP 5 имеет множество функций OO, таких как Reflection, тип hinting, интерфейс, модификаторы доступа и список. Большинство этих новых функций вдохновлены JAVA. Например; реализация интерфейса и наследующего класса одинаковы в PHP и JAVA. Таким образом, большинство новых функций с их стилями и соглашениями об именах основаны на JAVA. Его можно назвать эволюцией PHP простого языка сценариев для своего рода надежного языка OO.

Ответ 10

Я действительно не понимаю, как это важно. Синтаксис - синтаксис. Есть много человеческих языков, английский для одного, где он не соответствует какой-либо конкретной схеме, но мы узнаем его независимо. Все о знании вашего синтаксиса вместо угадывания.