Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP_Барчук_довідник.doc
Скачиваний:
3
Добавлен:
31.08.2019
Размер:
1.14 Mб
Скачать

7.3 Виклик функції за допомогою імені збереженого в змінній

Існує можливість зберігати ім’я функції в змінній у вигляді рядку, а потім викликати дану фунцкці, використовуючи цю зміну.

В яких випадках вам може знадобитися такий підхід?

Передовсім, коли ім’я функції може бути передане у вигляді рядка в іншу функцію. Окрім цього іноді потрібно зберегти ім’я функції в БД разом із іншою інформацією і при цьому мати змогу вилучати не тільки дані, але і ім’я функції, котра ці дані обробляє.

Найбільш унікальним способом використання цього підходу є можливість генерації імен функції.

Виклик функції при такому підході виконується за допомогою круглих дужок () до імені змінної, яке повинно співпадати із ім’ям функції.

<?

function is_divisible_by_1($num){ echo "$num завжди ділиться на 1"; } function is_divisible_by_2($num){

if($num%2 == 0){ echo "$num завжди ділиться на 2"; }

}

function is_divisible_by_3($num){

if($num%3 == 0){ echo "$num завжди ділиться на 3"; }

}

function is_divisible_by_4($num){

if($num%4 == 0){ echo "$num завжди ділиться на 4"; }

}

function is_divisible_by_5($num){

if($num%5 == 0){ echo "$num завжди ділиться на 5"; }

}

//тепер у циклі перебираємо значення від 5 до , перевіряємо на які числа

//ділиться задане число(2000). Отримаємо true для всіх випадків окрім '3'

for($i = 5; $i > 0; $i++){

$var = 'is_divisible_by_'.$i;

$var(2000); //Виконуються всі 5 функцій

}

?>

7.4 Передання і повернення значення по посиланню

По замовченню в PHP всі аргументи передаються по значенню. Це означає, що коли ви передаєте зміну в як параметр функції, то використовується копія даної змінної. Але іноді виникає потреба працювати з оригіналом змінної. В цьому випадку змінна буде передавати параметри за посиланням.

Приклад:

function myFunc($value, &$reference){};

де $value є копією змінної, а $reference посилається на оригінал змінної.

Приклад:

<?

//створимо функцію, яка буде збільшувати значення змінної на 2

function add2(&$number){

return $number += 2;

};

//Використаємо цю функцію

$mynum = 5;

$output = add2($mynum);

//Тепер добавимо до змінної $output 1 і виведемо на отриманий результат:

//отримаємо output = 8, mynum = 7

$output++;

echo "<p>output = {$output}, mynum = {$mynum}</p>\n";

8. ООП

ООП – є програмною парадигмою. За визначенням ООП являється практичним підходом, який дозволяє рішати проблеми незалежно від певної мови програмування або від апаратної архітектури.

По сутті PHP – процедурна мова , котра має синтаксичні складові, необхідні для підтримки рішень, використовуючи техніку ООП.

Центральною концепцією ООП являється об’єкт, який представляє собою структуру даних.

Клас на основі якого створений наш об’єкт, визначає функціональність нашого об’єкту.

8.1 Класи і модифікатори доступу

Синтаксис класу:

class Name{ //тіло класу }

Методи та властивості класу можуть мати модифікатори доступу:

public – повний доступ;

private – доступ до змінної чи функції з таким модифікатором буде дозволено лише в середині об’єкту;

protected – доступ буде відкрито тільки через об’єкт.

Для того щоб звернутися до змінної з модифікатором доступу private використовується конструкція ( $this-> ).

Приклад:

class YouName{

//Властивості класу

private $name;

protected $lastname;

public $fullname;

//Методи класу

public function MyName($name){ $this->name = $name; }

public function getName(){ return $this->name; }

}

Зверніть увагу що при використані конструкції $this-> не треба вказувати $this->$name треба вказувати лише ім’я змінної $this->name.

Створимо об’єкт нашого класу для цього використаємо ключове слово new:

$myObject = new YouName();

$myObject -> MyName("Alex");

echo $myObject -> getName(); //Отримаємо 'Alex'

$myObject -> lastname = "Petrenko";

echo $myObject -> lastname; //Отримаємо 'Petrenko'

$fullname = $myObject -> getName()." ".$myObject -> lastname;

echo $fullname; //Отримаємо 'Alex Petrenko'

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]