Создание собственных функций в PHP
В прошлых статьях я рассказывал о стандартных функциях PHP, но ни разу не упомянул о том, что функции может создавать сам программист. Те, кто знаком с другими языками воспримут это как само собой разумеющееся, тем же, кто не был знаком до этого ни с одним языком программирования будет интересно прочесть данную статью.
“Для чего собственно нужно создавать функции?”-спросите вы. Ведь PHP обладает огромным количеством самых разнообразных функций, которые, казалось бы, предусмотривают все случаи жизни. Что ж…вы допускаете ошибку…и цель этой статьи развеять данное ваше заблуждение. Вы не добьетесь особых высот если будете писать скучный алгоритм под каждый чих.. Представьте себе некую последовательность действий (использования стандартных функций), которая понадобится не раз и не два, а десятки, сотни раз в разрабатываемой вами системе.. Да такое представить сложно, но это возможно, например в том же WordPress. Конечно можно эту последовательность действий просто копипастить, но, если вы в ней вдруг что-то захотите изменить, все точки использования придется менять…как неудобно, не правда ли? Да и это банально скучно. Работа программиста гораздо увлекательнее
Создавая свои функции вы приобретаете мощный инструмент, который будет удобен в использовании, и, если вы захотите что то переделать вы сможете это довольно-таки быстро осуществить. Кроме того, вы получаете необычайную гибкость. Грамотно и продуманно написанная функция может использоваться в различных ситуациях, иногда даже в тех, о которых вы поначалу, при написании этой функции не представляли
Надеюсь, мне удалось убедить вас, что писать собственные функции это не заскок профессиональных программистов, а это удобно и очень экономит время. Итак, теперь перейдем к конкретике.
Я хочу разобрать пример создания функции, которая будет “инсертить” или “реплайсить” данные в MySQL. Но, с такой простой задачей может справиться и функция mysql_query, поэтому задача более обширна..нужно чтобы реплайсились любые поля переданные функции…непонятно? сейчас покажу на примере.
|
Функция вернет уникальный идентификатор вставленной строки или false если операция пройдет неудачно. Само собой я здесь не упоминаю что до вызова данной функции требуется подключиться к MySQL. Как это делать я рассказывал ранее. Итак как же использовать эту функцию? Да собственно очень просто, так же как и стандартные функции PHP. На “вход” подаются два параметра имя таблицы и многомерный массив содержащий в себе имена полей и значения которые будут заноситься в эти поля. Выглядеть это будет примерно вот так:
|
Данный пример занесет в поля field1 & field2 таблицы test значения 1 и 2 соответственно.
Естественно вы можете задавать любое количество параметров для написанной вами функции. Так же вы можете указать значение по умолчанию путем приравнивания параметра к значению прямо при описании функции.
Функцию можно сравнить с изолированным мирком. Внутри нее не видно никаких переменных извне, кроме сверхглобальных массивов, таких как $_GET, $_POST,$_COOKIE и т.д. и тех параметров которые вы передали функции. Так же и вне программы не видно тех переменных которые были в функции за исключением возвращенных ею.
Будьте осторожны при выборе имен функций. Нельзя использовать имена стандартных функций php. Их переопределять нельзя так же как и уже введенные функции. Для просмотра введенных ранее функций вы можете воспользоваться get_defined_functions() или function_exists().
Ну вот собственно и все на сегодня
Да, все возникающие вопросы не забывайте писать в комментариях, я обязательно отвечу.
ну тогда стоит и оставлять в комментариях перед функцией и такое как:
@return тип
Это очень полезно когда вы возвращаете например объект. Это позволит в том же eclipse видеть выпадающий список функций доступных для объекта.
ну и саму функцию можно сократить до
if(!is_array($fields)) return false
foreach ($fields as $val) $field .= $val['name'].
“=’”.mysql_real_escape_string($val['val']).”‘,”;
$field = substr($field,0,-1);
if(mysql_query(“INSERT INTO $tblName SET $field ;”))
{
$companyId = mysql_insert_id();
return $companyId;
}
return false;
Не спорю. В спешке не указал этого. Совет дельный, коллега.
Видео уроки ПХП для начинающих http://life-prog.ru/video.php
Хорошшая инфа.)