В этом посте я опишу пару полезных функций которые на много упрощают жизнь php программистам, и которые обязан знать любой уважающий себя php программист. Ну что начнем
1. Функции с произвольным числом аргументов
Возможно вы уже знаете что php позволяет создавать функции с необязательными аргументами, но существует метод который позволяет создать функцию с произвольным числом аргументов. Но для начала разберемся с первым:
//функция с 2мя необязательными аргументами
function foo($arg1 = '', $arg2 = '')
{
echo "arg1: $arg1\n";
echo "arg2: $arg2\n";
}
foo('hello','world');
/* выводит:
arg1: hello
arg2: world
*/
foo();
/* выводит:
arg1:
arg2:
*/
Это был пример функции с необязательными аргументами, теперь давайте рассмотрим функцию с использованием произвольного числа аргументов, будем использовать func_get_args():
// список аргументов может быть пустым
function foo()
{
// возвращает массив всех переданных аргументов
$args = func_get_args();
foreach ($args as $k => $v)
{
echo "arg".($k+1).": $v\n";
}
}
foo();
/* не выведет ничего */
foo('hello');
/* выведет
arg1: hello
*/
foo('hello', 'world', 'again');
/* выведет
arg1: hello
arg2: world
arg3: again
*/
2. Использование Glob() для поиска файлов
Нужная функция.. благодаря glob() можно выполнять поиск файла в текущей директории… приведу пару примеров:
// ищет все php файлы то есть * обозначает все возможные значения
$files = glob('*.php');
print_r($files);
/* результат будет примерно таким:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/
Вы можете искать сразу несколько типов файлов
// ищет все php и txt файлы
$files = glob('*.{php,txt}', GLOB_BRACE);
print_r($files);
/* результат будет примерно таким:
Array
(
[0] => C:\AppServ\www\testing\phptest.php
[1] => C:\AppServ\www\testing\pi.php
[2] => C:\AppServ\www\testing\post_output.php
[3] => C:\AppServ\www\testing\test.php
[4] => C:\AppServ\www\testing\log.txt
[5] => C:\AppServ\www\testing\test.txt
)
*/
3. Магические константы
Php поддерживает использование так называемых “magik constants” для нахождения текущей строки (__LINE__), пути расположения файла (__FILE__), пути папки в которой находится текущий файл (__DIR__), имя функции (__FUNCTION__), имя класса (__CLASS__), имя метода (__METHOD__). Посмотрим их применение на примере:
$i=__DIR__;
echo '
DIR: ',$i;
$i=__FILE__;
echo '
FILE: ',$i;
$i=__LINE__;
echo '
LINE: ',$i;
function my_one(){
$i=__FUNCTION__;
echo '
FUNCTION: ',$i;}
my_one();
/* Выдаст результат типа
DIR: C:\AppServ\www\testing
FILE: C:\AppServ\www\testing\functions.php
LINE: 42
FUNCTION: my_one
*/
4. Генерация уникальных ID
Возникает много таких ситуаций когда требуется с генерировать уникальный id. Некоторые для этого используют функцию md5() для этого но он не совсем подходит для этих целей выглядит это у них как то вот так:
//генерация уникальной строки
echo md5(time() . mt_rand(1,1000000));
Но для этих целей существует более актуальная функция uniqid(), используется он так:
echo uniqid();
echo uniqid();
/*
выведет два разных id
*/
Вы можете уменьшить шансы выпадения одинаковых id поставив префикс:
echo uniqid('foo_');
/*выведет примерно
foo_4bd67d6cd8b8f
*/
//с большей энтропией
echo uniqid('',true);
/*выведет примерно
4bd67d6cd8b926.12135106
*/
//вместе
echo uniqid('bar_',true);
/*выведет примерно
bar_4bd67da367b650.43684647
*/
Вот и все следующие полезные функции ждите в следующих постах…)