Насколько эффективный, определяют в PHP?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

20
задан Brian Tompsett - 汤莱恩 27 November 2015 в 11:31
поделиться

7 ответов

Сама операция определения выполняется довольно медленно, что подтверждается профилировщиком xdebug.

Вот тесты из http://t3.dotgnu.info/blog/php/my-first-php-extension.html :

  • pure 'define'
    {{1 }} 380,785 выборок / сек
    14,2647 средних констант msecs / first-response

  • , определенных с расширением hidef
    930,783 выборок / сек
    {{1} } 6.30279 mean msecs / first-response


обновление неработающей ссылки

Сообщение в блоге, указанное выше, покинуло Интернет. Его все еще можно просмотреть здесь через Wayback Machine . Вот еще одна похожая статья .

Библиотеки, на которые ссылается автор, можно найти здесь (apc_define_constants) и здесь (расширение hidef) .

17
ответ дан 30 November 2019 в 00:27
поделиться

Основные отличия:

  • определяют, является постоянным, переменный переменный
  • они другой объем/видимость
0
ответ дан 30 November 2019 в 00:27
поделиться

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

0
ответ дан 30 November 2019 в 00:27
поделиться

В целом идея константы состоит в том, чтобы быть постоянная , (Забавные звуки, правильно? ;)) в Вашем программа . Что означает, что компилятор (интерпретатор) заменит "FOOBAR" значением FOOBAR всюду по Вашему всему сценарию.

Так для теории и преимуществ - если Вы компилируете. Теперь PHP является довольно динамичным, и в большинстве случаев Вы не заметите другое, потому что Сценарий PHP компилируется с каждым выполнением. Afai-can-tell Вы не должны видеть заметные различия в скорости между константами и переменными, если Вы не используете кэш байт-кода такой в качестве APC, Оптимизатор Зенда или eAccelerator. Затем это может иметь смысл.

Все другие преимущества/недостатки констант были уже отмечены здесь и могут быть найдены в руководство .

PHP
5
ответ дан 30 November 2019 в 00:27
поделиться

Вот различия, от , руководство

  • Константы не имеет знака доллара ($) перед ними;
  • Константы могут только быть определены с помощью определения () функция, не простым присвоением;
  • Константы могут быть определены и получены доступ где угодно без учета к переменным правилам обзора данных;
  • Константы не могут быть переопределены или не не определены, после того как они были установлены; и
  • Константы могут только оценить к скалярным величинам.

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

4
ответ дан 30 November 2019 в 00:27
поделиться

Не уверенный в эффективности, но это больше, чем создает var:

  • Это - константа: Вы не можете переопределить или повторно присвоить эту УСТАНОВКУ.
  • , Если определение не найдено, $something установлен на "УСТАНОВКУ", которая полезна, например, в i18n: если перевод отсутствует (т.е. соответствие определяют, файл локализации), мы видим хвастовство в прописном, довольно видимом...
-3
ответ дан 30 November 2019 в 00:27
поделиться
php > $cat='';$f=microtime(1);$s='cowcow45';$i=9000;while ($i--){$cat.='plip'.$s.'cow';}echo microtime(1)-$f."\n";

0,00689506530762

php > $cat='';$f=microtime(1);define('s','cowcow45');$i=9000;while ($i--){$cat.='plip'.s.'cow';}echo microtime(1)-$f."\n";

0,00941896438599

Это повторяется с аналогичными результатами. Мне кажется, что константы определяются и / или используются немного медленнее, чем переменные.

5
ответ дан 30 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: