632.89K
Category: programmingprogramming

Користувальницькі функції

1.

PHP
Лекція №3

2.

Користувальницькі функції
---------------------------------------------------------------------------------------------------------------------------------------------
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Example function.\n";
return $retval;
}
?>

3.

<?php
function test($param1, $param2) {
$result = $param1 * $param2 - 13;
return $result;
}
echo test(12,44); //515

4.

Те ж саме
<?php
function test($param1, $param2) {
return $param1 * $param2 - 13;
}
echo test(12,44); //515

5.

{
echo $param2 . ' ' . $param1.PHP_EOL;
}
test('aa','asdasdasd');
echo test(12, 44);
var_dump(test('as',33.1));
?>
Output:
aa asdasdasd
12 44
as 33.1

6.

{
echo $param2 . ' ' . $param1.PHP_EOL;
return $param1.' та '.$param2;
}
test('aa','asdasdasd');
echo test(12, 44).PHP_EOL;
var_dump(test('as',33.1));
?>
Output:
asdasdasd aa
44 12
12 та 44
33.1 as

7.

<?php
function takes_array($input)
{
echo '$input[0] + $input[1] = '. $input[0] + $input[1];
}
?>

8.

Передача параметрів як посилань
------------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
function inc(&$param)
{
$param++;
}
$o=123;
inc($o);
echo $o.PHP_EOL;//124
inc($o);

9.

Значення за замовчуванням
<?php
function welcome($name='user')
{
return 'Welcome to hell, '.$name.PHP_EOL;
}
echo welcome();
//Welcome to hell, user
echo welcome('Маріяка');//Welcome to hell, Маріяка

10.

<?php
function welcome()
{
return 'Welcome'.PHP_EOL;
}
echo welcome();
echo welcome(1, 123, 14145, 515, 15, 'as', 'asasdasdasasd', 'ff');
?>
Output:
Welcome
Welcome

11.

func_num_args()
повертає
аргументів, переданих функції
func_get_arg(номер аргумента)
вказаний аргумент
кількість
- повертає
func_get_args() - повертає масив переданих
аргументів

12.

if(func_num_args()){
$result=null;
foreach(func_get_args() as $arg){
$result.='Welcome, '.$arg.PHP_EOL;
}
}
return $result;
}
echo welcome();
echo welcome('Вася', 'Марта', 'Міша', 'Назар', 'Рома', 'шановний абітурієнт');
?>
Welcome %)
Welcome, Вася
Welcome, Марта

13.

<?php
function print_one()
{
echo 1;
}
$func_name='print_one';
$func_name(); //1

14.

Анонімні функції
<?php
$hoho = function($name)
{
echo 'hoho '. $name.PHP_EOL;
};
$hoho('гиги');
$hoho('PHP');
?>

15.

Приклад використання анонімних
функцій
<?php
echo preg_replace_callback('~-([a-z])~', function
($match) {
return strtoupper($match[1]);
}, 'hello-world');
// виведе helloWorld
?>

16.

17.

Ще про рекурсію...
1. Начальник завжди правий.
2. Якщо начальник не правий, дивитися п. 1.

18.

<?php
// Приклад тернарного оператора
$i=0;
$result = $i ? 'start' : 'stop';
// Те ж саме при використанні if/else
if ($i) {
$result = 'start';
} else {
$result = 'stop';
}
?>

19.

Рекурсія на практиці
<?php
function factorial($number)
{
return !$number ? 1 : $number * factorial($number - 1);
}
echo factorial(5); // 120
echo factorial(123);//1.2146304367025E+205
echo factorial(0); // 1

20.

ДОКУМЕНТАЦІЯ
http://ua2.php.net/manual/ru/ - онлайн
http://ftp.ntua.gr/mirror/PHP/manual/ - оффлайн

21.

Д/З ознайомитися (прочитати список і що
робить, щоб орієнтуватися що є) з функціями
наступний розділів:
PHP Опции и Информация
Управление функциями
Функции для работы с переменными
Misc. — Разные функции
Строки
Многобайтные строки
Массивы
Дата и Время
Каталоги
Функции для работы с файловой системой

22.

Дата та час
string date ( string $format [, int $timestamp = time() ] )
<?php
echo date('m/d/Y H:i:s').PHP_EOL;
//09/23/2014 17:00:54
echo date('d M Y H:i:s').PHP_EOL;
//23 Sep 2014 17:00:54
echo time().PHP_EOL;// timestamp
//1411480854
// це є кількість секунд з 1.01.1970 00:00 UTC
echo date('m/d/Y H:i:s', time()-60).PHP_EOL;
//09/23/2014 16:59:54
echo date('m/d/Y H:i:s', 0).PHP_EOL;
//01/01/1970 03:00:00
Ще подивіться про strtotime()
date_default_timezone_set('UTC');
echo date('m/d/Y H:i:s', 0).PHP_EOL;

23.

if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "файл: $file : тип: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
?>
Або ж
<?php
$dir = '../../';
$files = scandir($dir);
if($files!== false){
foreach($files as $filename){
echo $filename.PHP_EOL;
}
}

24.

ранку”(6-12 год), “Доброго дня” (12-18), “Доброго вечора”(1824), “Доброї ночі”(00-06), в залежності від того, яка година.
2. Написати програму виводу форматованої дати (дата
публікації чогось). Якщо опубліковано менше хвилини тому, то
писати скільки секунд тому написано; якщо менше години тому,
скільки хвилин тому; Якщо менше 12 годин тому, то написати
скільки годин тому. Якщо 12-24 годин тому, то написати
“Сьогодні о **”(врахувати, що якщо зараз третя ночі, то 12
годин тому це буде вчора). Якщо вчора, то “Вчора о **”, інакше
дату в форматі “24 січня 2001 в 14:33”.
P.S: Формат F виводить January, а не січень.
3. Написати функцію, яка б форматувала вивід байтів (12 Б,
4.36 кБ, 1.14 МБ, 18.55 ГБ, 4.11 ТБ)
4. Написати 2 функції: 1) підраховує розмір файлів в папці (і в
підпапках теж); 2) кількість файлів і папок, повертає масив зі
значеннями.
5. Реалізувати рекурсивний перегляд директорії (вивести то на
1 сторінці в браузері). Якщо папка — то вивести її ім’я, кількість
файлів та вміст, якщо файл — то його ім’я, розмір та дату
English     Русский Rules