Пару полезных PHP функций

В этом посте я опишу пару полезных функций которые на много упрощают жизнь 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
*/

Вот и все следующие полезные функции ждите в следующих постах…)
Теги:
AppServ, testing, uniqid, выведет, files, FUNCTION, функции, hello, функция, результат, function, функцию, аргументов, примерно , hello , выводит, world, world , файлов , целей, текущей, выведет , много, файла, аргументов , можете, output, phptest, Array , таким, числом, примерно, будет, позволяет, существует
Добавлено: 13 Июля 2018 07:50:59 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...