Знаете ли вы о каком-либо проекте, который переопределил нативные типы PHP как объекты?Это возможно? - PullRequest
4 голосов
/ 25 сентября 2011

Знаете ли вы о каком-либо проекте, который переопределил нативные типы PHP (строки, массивы, целые числа, числа с плавающей запятой, bools и т. Д.) Как объекты?Я не уверен, насколько это возможно, но я просто подумал, что было бы неплохо иметь нативные типы в качестве объектов.

пример:

$Name = new String('Mary had a little lamb.');
print($Name->Length);  //prints 23
print($Name->Replace('/lamb/', 'duck'));  // prints Mary had a little duck.

Это добавит многонакладные расходы?Есть мысли по этому поводу?

Ответы [ 2 ]

6 голосов
/ 25 сентября 2011

Есть много, много, много (даже нативных) проектов, которые нацелены на это - вот что: никто не использует их.1006 *

PHP имеет ограниченную перегрузку операторов.Вы не можете перегрузить оператор +.Таким образом, чтобы сложить два числа, вам нужно написать $number->add($number2), что не совсем интуитивно понятно. PHP имеет множество предопределенных функций.Можно утверждать, что PHP обладает самой мощной стандартной библиотекой из всех языков программирования.Но: Все эти функции возвращают нативные типы, а не штучные.Поэтому вам нужно написать что-то вроде $number = new Number(function_returning_number());.Это также относится к сторонним библиотекам.

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

Для решения второй проблемы существует Autoboxing RFC .Может быть, это будет реализовано, а может и нет.

0 голосов
/ 25 сентября 2011

Возможно, кто-то может уточнить это, поскольку я не совсем осведомлен по этому вопросу - но PHP работает на движке Zend (C ++), и, таким образом, если вы достаточно опытны, возможно, сможете реализовать вашу идею выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...