php зачем нужны функции

Функции в PHP 5.6 — что нового?

php зачем нужны функции. ca0d7a3e2068320abca6583749976b17. php зачем нужны функции фото. php зачем нужны функции-ca0d7a3e2068320abca6583749976b17. картинка php зачем нужны функции. картинка ca0d7a3e2068320abca6583749976b17. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

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

Большинство из приведенных предложений пока находятся на стадии обсуждения. Но среди них уже есть утверждённые и даже реализованные.

Также искушённого читателя ждёт эксклюзив: изучая чужие умные мысли, я и сам решился написать собственный RFC. Сейчас вы не увидите его в списке предложений, так как на данный момент он находится на самом начальном этапе — на рассылке internals@lists.php.net.

А начну обзор с RFC, который уже реализован и гарантированно попадает в релиз 5.6.

Синтаксис для функций с переменным числом аргументов

Реализовано в PHP 5.6, Принято 36 голосами против 1

$params будет пустым массивом, если число переданных аргументов меньше, чем число объявленных. Все последующие аргументы будут добавлены в массив $params (с сохранением порядка). Индексы в массиве $params заполняются от 0 и по возрастанию.

На данный момент функции с переменным числом аргументов реализуются при помощи функции func_get_args(). Следующий пример показывает, как сейчас реализуется функция с переменным числом аргументов для подготовки и выполнения запроса MySQL:

Во-первых, глядя на синтаксис функции public function query($query) невозможно понять, что это, собственно говоря, функция с переменным числом аргументов. Кажется, что это функция выполняется только с обычным запросом и не поддерживает дополнительных аргументов.

Во-вторых, так как func_get_args() возвращает все аргументы, переданные в функцию, то вам сначала необходимо удалить параметр $query используя array_slice(func_get_args(), 1).

Данное RFC предлагает решить эти проблемы добавлением специального синтаксиса для функций с переменным числом аргументов:

Возможности нового синтаксиса
Преимущества

Переопределение списка аргументов — эксклюзив!

Обсуждается на internals@lists.php.net

И так, на данные момент моё предложение уже существенно отличается от первоначального и сводится к следующему: предоставить возможность изменять список аргументов метода (их количество и/или тип) при наследовании классов:

Теперь можно использовать обе реализации расчёта периметра:

Большая наглядность и естественность второго вызова очевидна. Конечно, что-то подобное можно реализовать заморочившись с func_get_args(). Но предложенный подход даёт полную ясность того, что конкретно реализовывает метод, делает код более чистым, избавляя от каскада if-else (по количеству и типу аргументов). По-умному это называется ситуативным полиморфизмом, который уже давно и успешно используется в C++, Java/Scala, Delphi и многих других ЯП. Я уверен, что возможность изменять набор аргументов метода при наследовании — это очень полезно. Проблем с обратной совместимостью возникнуть не должно.

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

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

Если мы всегда используем дефолтные значение, то проблем не возникает. Но что, если нам надо поменять только параметр $report_errors, а остальные оставить без изменений? Для этого нам придётся найти определение функции и скопировать все остальные дефолтные значения в вызов. А это уже довольно скучно, потенциально глючно и может поломаться, если часть дефолтных значений изменится.

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

В коде выше, $join_type и $execute будут иметь дефолтное значение. Естественно, таким образом мы можем опускать только необязательные параметры. В случае обязательных параметров будет генерироваться такая же ошибка, как и сейчас, когда в вызов функции передано недостаточно аргументов.

Проблемы

Проблема возникнет с поддержкой внутренних функций, использующих ручной вызов ZEND_NUM_ARGS(). Автор предложения просмотрел все функции в стандартном дистрибутиве, однако расширения PECL, которые не используют using zend_parse_parameters или делают это странным образом с zval-type без их корректной инициализации или проверки выходных результатов, могут требовать фиксов. Другими словами, они могут поломаться, если передать default с нулевым указателем на ссылку. Это не выглядит большой проблемой с точки зрения безопасности, но в любом случае не особо приятно.

Импорт функций из пространства имён

Принято 16 голосами против 4, Предложено включить в PHP 5.6

PHP предоставляет возможность импортировать пространства имён и типы (классы, интерфейсы, трейты) через оператор use. Тем не менее, для функций такой возможности нет. В результате, работа с функциями в пространстве имён выглядит довольно громоздко.

Функцию можно вызвать без указания полного имени, только если вызов находится в том же пространстве имён, что и сама функция:

Можно избежать указания полного имени, если импортировать пространство имён, в котором определена функция. Однако его алиас всё равно должен быть указан при вызове функции:

Невозможно импортировать функцию напрямую. Пока что PHP не поддерживает это.

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

Использование одного и того же оператора use и для пространства имён классов, и для функций, скорее всего, приведёт к конфликтам и оверхеду.

Вместо изобретения нового оператора, можно просто использовать комбинацию use и function:

Причём, такой подход можно было бы использовать не только для функций, но и для констант:

Так же как и для классов, должна быть возможность делать алиасы для импортируемых функций и констант:

Основные вопросы и ответы
Почему бы просто не импортировать пространство имён?

Действительно, вы можете импортировать пространство имён. Это не критично для классов и, подавно, для функций. Но есть один случай, когда импорт функций может ощутимо улучшить читаемость кода. Это будет очень полезно при использовании небольших библиотечек, которые представляют собой просто несколько функций. Можно было бы помещать их в пространство имён, например, по имени автора: igorw\compose(). Это бы помогло избежать конфликтов. И пользователь такой функции, которому нет дела до того как зовут её автора, мог бы просто писать compose(). Вместо этого пользователь вынужден изобретать новый бессмысленный алиас просто для того, чтобы использовать функцию.

Возврат в глобальное пространство имён

По умолчанию PHP будет искать функции в локальном пространстве имён, а затем будет возвращаться в глобальное. Для функций, которые были импортированы оператором use, возврата в глобальное пространство имён быть недолжно.

Вызов strlen() теперь однозначен. non_existent() более не ищется в глобальном пространстве имён.

Зачем нужен оператор use function, почему не просто use?

В PHP функции и классы хранятся в отдельных пространствах имён. Функция foo\bar и класс foo\bar могут сосуществовать, потому что из контекста можно понять, что мы используем (класс или функцию):

Если оператор use будет поддерживать импорт функций, то это повлечёт проблемы с обратной совместимостью.

Поведение изменилось после того, как поменялся use. В зависимости от версии PHP, будут вызваны разные функции.

Исключения вместо фатальных ошибок

Это RFC предлагает разрешить использование исключений вместо фатальных ошибок.

Для наглядности предложения, рассмотрим следующий кусок кода:

Сейчас этот код приведёт к фатальной ошибке:

Данный RFC заменяет фатальную ошибку на EngineException. Если исключение не будет обработано, мы всё равно получим фатальную ошибку:

Конечно, его не проблема и обработать:

Совместимость с E_RECOVERABLE_ERROR

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

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

Catch-all блоки в уже существующем коде

Добавление модификатора deprecated

Данный RFC предлагает добавить модификатор deprecated для методов и функций, которые присваивают функциям флаг ZEND_ACC_DEPRECATED, таким образом, при вызове выкидывая исключение E_DEPRECATED.

Помечать используемые функции и методы как устаревшие — это обычная практика для больших PHP фреймворков при релизе новых версий. Позже эти функции убираются окончательно. Нативные функции требуют только флага ZEND_ACC_DEPRECATED для того, чтобы Zend при их вызове автоматически сгенерировал ошибку E_DEPRECATED. Тем не менее, пользовательские функции могут быть отмечены как устаревшие только добавлением тега @deprecated (в комментарии документации) или генерацией ошибки E_USER_DEPRECATED. Но почему обычный разработчик должен генерировать ошибку вручную, в то время как нативная функция требует только флага?

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

Ошибка E_USER_DEPRECATED может быть скорее использована для пометки как устаревшей целой библиотеки или способа вызова функций.

Так же, метод ReflectionFunction::isDeprecated() на данный момент бесполезен для пользовательских функций. И этот RFC решает указанную проблему.

Вызов методов и доступ к свойствам создаваемого объекта

Цель этого RFC — предоставить поддержку вызова методов и доступа к свойствам созданного объекта одной строкой. Мы можем использовать один из двух нижеприведенных синтаксисов.

Синтаксис 1 (без скобок)
Синтаксис 2 (со скобками)

Эпилог

Ну, вот и всё. Список изменений получился довольно внушительный, а ведь он затрагивается только работу с функциями! Лично мне планируемые нововведения очень нравятся, хочется их попробовать уже сейчас 🙂

Буду рад обсудить все эти новшества и, конечно же, пуститься в горячую дискуссию вокруг моего RFC. А, возможно, кто-нибудь ещё и свой предложит 🙂

Источник

PHP функции

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

Что такое функция:

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

Это нужно для того, что бы не повторять постоянно код программы, потому что в программирования считается плохим тоном, повторять код, ну и на мой взгляд это ещё удобнее.

Создания функции в PHP:

Вызвать её тоже очень просто, пишем название функции и круглые скобки.

Как видите всё очень просто, вот что она выводит.

php зачем нужны функции. %D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world. php зачем нужны функции фото. php зачем нужны функции-%D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world. картинка php зачем нужны функции. картинка %D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:php зачем нужны функции. %D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world. php зачем нужны функции фото. php зачем нужны функции-%D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world. картинка php зачем нужны функции. картинка %D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Также, если мы её визовым несколько раз, то получим несколько предложений «Hello World».

php зачем нужны функции. %D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world 3. php зачем нужны функции фото. php зачем нужны функции-%D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world 3. картинка php зачем нужны функции. картинка %D0%92%D1%8B%D0%B2%D0%BE%D0%B4 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 hello world 3. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Как видите это достаточно удобно и просто.

Параметры в функции:

Также в PHP есть передача параметров в функции, это очень полезно, к примеру когда вам нужно сравнить два числа, вы просто передаёте эти числа в функцию и она уже сравнивает.

php зачем нужны функции. %D0%92%D1%8B%D0%B7%D0%BE%D0%B2 num top. php зачем нужны функции фото. php зачем нужны функции-%D0%92%D1%8B%D0%B7%D0%BE%D0%B2 num top. картинка php зачем нужны функции. картинка %D0%92%D1%8B%D0%B7%D0%BE%D0%B2 num top. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Также в качестве параметра можно передавать переменную, при чём, вообще без разницы какую, тут всё зависит от того, что вам нужно делать в функции, можно даже передавать массивы.

Возврат значения в функции:

Также функция может возвращать разные значения, это нужно, к примеру, если нам не надо, чтобы функция выводила на экран, какое значение больше, а только давала нам это значение, для дальнейшей работы с ним.

php зачем нужны функции. %D0%92%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%82 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8. php зачем нужны функции фото. php зачем нужны функции-%D0%92%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%82 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8. картинка php зачем нужны функции. картинка %D0%92%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%82 %D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Ещё в PHP можно передать функцию как параметр, это иногда бывает полезно, что бы не создавать отдельную переменную.

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

Глобальные и статические переменные:

Это часть не очень сильно относится к функциям, но тем не менее её надо знать.

Глобальные переменные:

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

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

Источник

Функции PHP

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

Функция — это именованный блок кода, который может быть вызван из любого другого участка кода для выполнения определенной задачи. Значения (аргументы) могут быть переданы в функцию, чтобы их можно было использовать в сценарии функции, а функция, в свою очередь, может возвращать результаты в то место сценария, из которого она была вызвана.

Функции в PHP существуют в двух формах:

Создание пользовательской функции PHP

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

Примечание: Имена функций не чувствительны к регистру букв.

Пример

Результат выполнения кода:

Параметры функции PHP

Пример

Результат выполнения кода:

Пример

Результат выполнения кода:

Передача параметров в функцию по ссылке

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

Передача параметров по ссылке выполняется добавлением амперсанда (&) к имени параметра в определении функции, как показано в примере ниже:

Пример

Результат выполнения кода:

Значения по умолчанию для параметров функции

Функции могут определять значения аргументов по умолчанию. Чтобы установить значение по умолчанию просто вставьте имя параметра, затем знак равенства (=) и значение по умолчанию:

Пример

Результат выполнения кода:

Примечание: Все параметры, для которых установлены значения по умолчанию, должны находиться правее параметров, для которых значения по умолчанию не заданы. В противном случае ваш код выдаст ошибку.

Возврат значения из функции PHP

В следующем примере возвращаемое функцией значение присваивается переменной:

Пример

Результат выполнения кода:

Функция не может возвращать несколько значений. Но мы можем получить несколько результатов, возвращая массив, как показано в следующем примере:

Пример

Результат выполнения кода:

Строгая типизация

Обратите внимание, что в приведенном выше примере мы не указывали PHP-интерпретатору, к какому типу данных принадлежит переменная.

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

В следующем примере функция получает параметры как число, так и строку, не используя strict :

Пример

Результат выполнения кода:

Пример

Результат выполнения кода будет примерно такой:

В этом примере мы передаём функции в качестве аргументов как число, так и строку, но здесь мы добавили строгий ррежим strict и получили фатальную ошибку.

Объявления типа возвращаемого значения

Чтобы объявить режима строгой типизации для возвращаемого значения функции, добавьте двоеточие (:) и тип прямо перед открывающей фигурной скобкой < при объявлении функции.

Пример

Результат выполнения кода:

Укажем тип возвращаемого значения, отличный от типов аргументов, и убедимся, что тип возвращаемого значения функции является правильным:

Источник

Функции в PHP

Подсказка:
Для получения полного списка встроенных PHP функций в правой колонке нажмите кнопочку Поиск при пустой строке поиска «PHP поиск».
Если Вы хотите узнать подробное описание с примером конкретной PHP функции укажите её в строке PHP поиск. →

В PHP существует две основные формы функций: встроенные и пользовательские.

Для определения пользовательской функции используется ключевое слово function.

Пример 1

Начиная с версии PHP 4.0 можно использовать значения аргументов, подставляемые по умолчанию.

Пример 2


Глава


Раздел


Передача аргумента по ссылке

Аргументы можно передавать по ссылке. Тогда все изменения, сделанные с аргументом в теле функции, отразятся на самой переменной.

Пример 3


Возврат значений

Для возврата значений из функции используется оператор return. Можно вернуть несколько значений, если применить список list().

Пример 4


Динамические функции

В PHP можно использовать динамические функции. Это означает, что если некоторой переменной присвоено имя функции, то с этой переменной можно обращаться точно так же, как с самой функцией.

Пример 5


Глобальные переменные

Чтобы переменная, созданная вне функции, была доступна внутри функции, надо объявить ее глобальной с помощью инструкции global.

Пример 6


Статические переменные

Чтобы переменная сохраняла свое значение между вызовами функции, нужно объявить ее статической с помощью инструкции static.

Пример 7

Была создана и проинициализирована переменная $ss. По отношению к функции funct( ) эта переменная останется локальной. При втором и последующих вызовах функции funct( ) инициализация игнорируется, а запоминается последнее присвоенное значение.

Источник

9 PHP функций, которые нужно знать всем

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

1. Создание функций с переменным числом аргументов

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

Но для начала, вспомним как мы создаём функции обычным образом:

Теперь посмотрим на то, как можно написать функцию с неограниченным количеством аргументов. Для этого будет использовать метод func_get_args():

2. Используем Glob() для поиска файлов

Часто названия функций говорят сами за себя. Такого нельзя сказать о функции glob().

Если не вдаваться в подробности, её функциональность схожа с методом scandir(). Она позволяет найти необходимый файл по шаблону:

Для нахождения файлов нескольких типов надо писать так:

Так же можно в шаблоне указать путь:

Для того чтобы получить полный путь к документу используйте метод realpath():

3. Информация об используемой памяти

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

В PHP существует мощный инструмент отслеживания используемой памяти. В разных частях скрипта нагрузки могут быть разные. Для того чтобы получить значение используемой памяти в данный момент, нам следует использовать метод memory_get_usage(). Для фиксации максимального количества используемой памяти используем memory_get_peak_usage()

4. Информация о процессоре

Для этого необходимо использовать метод getrusage(). Но учтите, что на Windows эта функция работать не будет.

Картина, изложенная выше, будет понятно тем, у кого есть опыт в системном администрировании. Для всех остальных предлагаем расшифровку:

Для того чтобы узнать какие ресурсы вашего процессора используются скриптом, вам необходимо значение ‘user time’ (время работы в пользовательском режиме) и ’system time’ (время работы в привилегированном режиме). Вы можете получить результат как в секундах, так и в микросекундах. Для того чтобы превратить общее количество секунд в десятичное число, вам необходимо разделить значение микросекунд на 1 миллион и добавить к значению секунд.

Запутанно как-то. Вот пример:

Хотя выполнение скрипта заняло около 3-х секунд, процессор не был сильно нагружен. Дело в том, что при вызове (sleep) скрипт практически не потребляет ресурсов процессора. Вообще существует множество задач, которые занимают значительное время, но при этом не используют процессор. К примеру, ожидание операций связанных с диском. Так что вы не всегда используете процессорное время в своих скриптах.

Работа скрипта заняла 1.4 секунды процессорного времени. В данном случае, время системных вызовов вообще низкое.

Время работы в привилегированном режиме (System Time) – это время, которое процессор затрачивает на выполнение системных запросов к ядру от имени программы. Пример:

Теперь системного времени затратилось намного больше, чем в прошлом примере. Всё благодаря методу microtime(), который использует ресурсы системы.

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

5. Магические константы

В PHP существует множество магических констант, таких как номер текущей строки (__LINE__), путь к файлу (__FILE__), путь к каталогу (__DIR__), имя функции (__FUNCTION__), имя класса (__CLASS__), имя метода (__METHOD__) и пространства имён (__NAMESPACE__).

Все мы их рассматривать не будем. Посмотрим только лишь парочку:

Используйте __LINE__ при отладке скриптов:

6. Генерирование уникальных ID

Бывают такие моменты, когда вам надо сгенерировать уникальную строку. Множество раз я видел, что для решения этой задачи используют функцию md5():

Но на самом деле для этих целей в PHP есть специальная функция uniqid()

Невооружённым взглядом можно заметить, что первые символы мягко говоря схожи… Так происходит из-за того, что данный метод использует время сервера для генерации символов. Это даже полезно, т.к. все сгенерированные значения получаются в алфавитном порядке, что даёт возможность быстро их сортировать.

Для того чтобы уменьшить шансы получения дубликата, мы можем добавить префикс или использовать второй параметр (увеличит количество символов):

Этот метод генерирует строки размером меньше, чем md5, тем самым вы сможете сэкономить место.

7. Сериализация

Вам когда-нибудь приходилось хранить комплексные данные в базе или в файле? Для того чтобы сконвертировать объект в строку в PHP предусмотрена специальная функция.

Вообще говоря, этих методов 2: serialize() и unserialize()

Вот так вот работают эти функции. Однако из-за бурного роста популярности JSON, в PHP 5.2 были добавлены 2 метода json_encode() и json_decode(). Их работа схожа с serialize():

Этот вариант более компактный и совместимый с другими языками, такими как JavaScript. Однако при работе с очень навороченными объектами может возникнуть потеря данных.

8. Сжатие строк

Кода мы говорим о сжатии, то на ум сразу же приходят архивные файлы в формате ZIP. PHP предоставляет возможность сжатия длинных строк без всяких файлов.

В следующем примере продемонстрируем работу функций gzcompress() и gzuncompress():

В наших силах уменьшить объём текста на 50%. В этих же целях можно использовать методы gzencode() и gzdecode(), которые используют другой алгоритм сжатия.

9. Выполнить перед завершением

В PHP существует функция register_shutdown_function(), которая позволит вам выполнить какой-то код перед завершением работы скрипта.

Допустим, вы хотите узнать какую-то информацию… Время работы скрипта:

На первый взгляд это может показаться тривиальной задачей. Для этих целей, вы можете поместить код в конце файла. Однако если перед этим где-то сработает функция exit(), этот код никогда не сработает. Так же, он не сработает если на странице будет ошибка или пользователь прервёт загрузку страницы (нажав на соответствующую кнопку в своём браузере);

При использовании метода register_shutdown_function() код выполнится в любом случае:

Вывод

PHP это целая планета, которая не перестаёт нас удивлять своим содержимым. А что думаете вы о данных функциях?

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.net.tutsplus.com/tutorials/php/9-useful-php-functions-and-features-you-need-to-know/
Перевел: Станислав Протасевич
Урок создан: 4 Марта 2011
Просмотров: 95569
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

php зачем нужны функции. thumbnail. php зачем нужны функции фото. php зачем нужны функции-thumbnail. картинка php зачем нужны функции. картинка thumbnail. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

php зачем нужны функции. thumbnail. php зачем нужны функции фото. php зачем нужны функции-thumbnail. картинка php зачем нужны функции. картинка thumbnail. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

php зачем нужны функции. thumbnail. php зачем нужны функции фото. php зачем нужны функции-thumbnail. картинка php зачем нужны функции. картинка thumbnail. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

php зачем нужны функции. thumbnail. php зачем нужны функции фото. php зачем нужны функции-thumbnail. картинка php зачем нужны функции. картинка thumbnail. Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *