Coding:
Функції. include, require
Якщо результатом роботи функції має бути одне-єдине значення, яке використовується далі, то функція має, як кажуть, повертати результат.
Звісно, що функція не завжди має виконуватися однаково. Деякі параметри мають відрізнятися у різних викликах, і ці параметри (або, як їх ще називають, аргументи) вказують в дужках після імені функції при її визначенні.
Приклад.
<?
function print_boo()
{
echo "boo";
} print_boo(); ?> Цей найпростіший приклад ілюструє:
- Визначення функції – ключове слово function, після нього ім’я функції – print_boo та дужки для параметрів. Оскільки виконання функції у даному випадку не залежить ні від чого і завжди відбувається однаково, то жодного параметру ми не визначили. Проте зверніть увагу, що дужки вказуються навіть у такому випадку
- Тіло функції у фігурних дужках {} – просто оператор echo “boo”
- Виклик функції – print_boo(). Цей виклик зробить точно те саме, що ми написали у тілі функції, а саме – надрукує “boo”
Розглянемо приклад, коли функція має параметри та повертає значення. Для повернення значення служить оператор return:
<?
function plus_one($num) {
return $num + 1;
} $a = 10; $b = plus_one($a); echo $b;
?> У цьому прикладі ми визначили функцію plus_one(), що приймає один параметр та повертає його значення плюс один. Тобто у результаті даного виклику plus_one($a) буде мати значення 11, і те саме присвоїться змінній $b.
return можна застосовувати не лише для повернення значення, але й просто для виходу з функції, подібно оператору break у циклі, наприклад:
<?
function check_password($login, $password) {
if($login != "foo") return;
if($password != "bar") return; echo "логін та пароль вірні.";
} check_password("foo", "bar"); ?> У цьому прикладі функція check_password() перевіряє, чи дорівнює перший параметр $login рядку “foo”, а другий - $password – рядку ”bar”. Якщо ні, то спрацьовує return і відбувається вихід з функції. Якщо ж обидва return не спрацювали, то друкується “логін та пароль вірні”.
Тепер дещо про видимість змінних у тілі функцій. Насправді всередині функцій не видно ті змінні, що використовуються у скрипті. Розглянемо такий приклад:
<?
function print_fruits()
{
foreach($fruits as $f){ echo "$f<br />n"; }
} $fruits = array("яблуко", "груша", "банан");
print_fruits(); ?> Можна було б подумати, що цей скрипт надрукує елементи масиву $fruits, проте цього не буде, у чому можна впевнитися, виконавши скрипт. Для того, щоб скрипт спрацював вірно, треба скористатися ключовим словом global:
<?
function print_fruits()
{
global $fruits;
foreach($fruits as $f){ echo "$f<br />n"; }
} $fruits = array("яблуко", "груша", "банан");
print_fruits(); ?> global робить змінну $fruits глобальною, тобто такою, що видна як у скрипті, так і всередині функції print_fruits().
Звісно, що функція може викликати інші функції, наприклад
<?
function add_exclamation($str)
{ return $str."!"; } function add_quotes_and_exclamation($str)
{
return '"'.add_exclamation($str).'"'; } echo add_quotes_and_exclamation("Яка ж це радість, ".
"друже мій, горіти, ".
"а не тліть");
?> Перша функція у цьому прикладі - add_exclamation() повертає свій параметр, до якого додано знак оклику. Тобто якщо викликати add_exclamation(“foobar”), то вона поверне рядок “foobar!”.
Друга функція - add_quotes_and_exclamation() додає як знак оклику, так і лапки до свого параметру. При цьому для додавання знаку оклику вона користується вже визначеною функцією add_exclamation(). Спробуйте вгадати, що надрукує цей скрипт та перевірте це, запустивши його.
Зверніть увагу на те, як у цьому прикладі вказано аргумент при виклику функції add_quotes_and_exclamation(). Це досить довгий рядок і на одному екрані він не помістився. Звичайно, можна було б написати його і в один рядок, проте читати такий код не зовсім зручно. Тому я розбив його на три коротші рядки та об’єднав їх операцією поєднання рядків (крапкою).
Звісно, якщо функція може викликати іншу функцію, то ніхто не може заборонити їй викликати саму себе. Такий прийом називають рекурсією. Наприклад, так можна написати функцію для розрахунку ступіню числа – квадрату, кубу, четвертого ступеню і т.д. Адже відомо, що наприклад четвертий ступінь числа – це число, помножене на третій ступінь. В свою чергу третій – це число, помножене на другий, і т.д. Тобто ось що можемо написати:
<?
function power($num, $p)
{
if(!$p) return 1; return $num * power($num, $p-1);
} for($i=0; $i<=10; $i++){ echo "2<sup>$i</sup> = ";
echo power(2, $i)."<br />n"; }
?> Приклад надрукує ступені числа 2 від 0 до 10:
20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 = 1024Рекурсія може бути дещо складною для сприйняття; відомий програмістський жарт стверджує, що для того, щоб зрозуміти рекурсію, треба зрозуміти рекурсію. Проте у багатьох випадках рекурсія є досить корисним засобом.
І останнє, що хотілось би розповісти у цьому уроці – функції include та require.
Часто виникає потреба використання великої кількості скриптів у одному проекті. Так само багато з цих скриптів використовують одні й ті ж самі функції. Визначати їх у кожному з цих скриптів недоцільно, тому роблять іншим чином. Усі функції, що використовуються кількома скриптами, збирають у один скрипт, а потім включають цей скрипт до інших за допомогою include. Наведемо приклад. Нехай у нашому проекті використовуються арифметичні функції plus_one() та minus_one(), що відповідно додають одиницю до аргументу та віднімають одиницю від аргументу. Виділимо ці функції до окремого файлу functions.php:
<?
function plus_one($n)
{
return $n + 1; }
function minus_one($n)
{
return $n - 1;
}
?> А тепер ми напишемо скрипт test.php, що буде використовувати функції з цього скрипта:
<?
include("functions.php"); echo plus_one(1) + minus_one(2); ?> Так само ми можемо написати include("functions.php") у будь-який інший скрипт і користуватися тими ж самими функціями.
Слід зазначити, що звичайно складний проект має велику кількість скриптів, що включаються один до одного за допомогою include. У тому числі можлива ситуація, коли один скрипт буде включено до іншого більше одного разу. У випадку якщо цей скрипт містить, скажімо, визначення функцій, виникне помилка, тому що ім’я функції має бути унікальним і визначення має зустрічатися лише один раз. Для таких випадків існує include_once() – якщо використовувати його замість include(), то є впевненість у тому, що кожен скрипт буде включено лише один раз.
Крім include() існує також функція require(). Її дія повністю подібна до include() за винятком реакції на ситуацію, коли файл зі скриптом, що включається, не знайдено або неможливо прочитати. include() у цьому випадку виведе зауваження про помилку, але виконання скрипта буде продовжено. require() ж виведе зауваження про помилку та припинить виконання скрипта. Це корисно у тих випадках, коли включаються життєво необхідні скрипти, наприклад, функції, що перевіряють логін та пароль користувача для доступу до сторінки – якщо цей скрипт не знайдено, то немає сенсу генерувати сторінку, і тому подібні задачі.
Звісно, require() теж має варіант require_once() для включення скрипту лише один раз.
Так, що ми мали засвоїти на цьому уроці:
- Функції застосовуються для спрощення програмування частин коду, що повторюються
- Функція має бути визначеною – мати ім’я список параметрів (можна пустий) та тіло, яке визначає, що саме функція робить
- Функція може повертати деяке значення
- Для повернення значення або припинення роботи функції служить return
- Функція може викликати інші функції, у тому числі саму себе (рекурсія)
- Для включення до скрипту іншого скрипту використовують include, include_once, require, require_once
Web розробка за допомогою FastTemplate(PHP)
РНР для всіх!
Урок №2 з PHP.
РНР для всіх!
Класи
Коментарі (27) | Залишити коментар
| Tori | 14.06.2011 11:44 |
| You have shed a ray of susnhine into the forum. Thanks! |
| Jaundalynn | 25.07.2011 02:27 |
| I feel satisfied after rdeanig that one. |
| Disguise-ST | 13.01.2012 06:54 |
| Всем Хай !!! Компания In-Disguise .com Рада Представить Вам - Анонимный и Полностью Автоматический VPN Сервис! In-Disguise .com - Полностью Автоматический VPN Сервис, Вам Больше не Придеться Терять Время На: 1 - Поиск Сапортов при внезапном отключении одного из серверов, Поиски как устоновить Стандартный OpenVPN Клиент, Скачивая Конфиги тратить время на их установку в программе. Устранять неполадки в системе при обновляниях, для стабильного соединения с ВПН. Сервис предостовляет Подписки Включающие доступ ко Всем Серверам Всего за 9 EURO. DoubleVPN, OPENVPN и PPTP VPN - ДОСТУП К 18 СЕРВЕРАМ В 10 СТРАНАХ ! Подписка на Все Сервера нашего Сервиса = Всего 9 Euro; 3 месяца = 20 Euro; 6 месяцев = 35 Euro; 1 год = 55 Euro. 2 - Уникальный VPN Клиент, Который ЛЕГКО Устанавливается на Все Виды Операционных Систем: MAC/Windows/Liinux!!! Позволит Вам ЛЕГКО Переключать ВПН Сервера Между Стран, Таких Как: USA/DE/UK/IT/NL/LU/EG/PA/RO/MY Постоянно Пополняеться Список Доступных Стран. В Ближайшее Время появятся Сервера в: Испании, Греции, Швеции, Мексике, Чехии, Польше, Китае, Бельгии... Виды VPN Соединение Включающие в одной Подписке - DoubleVPN и OpenVPN. 3 - В Программе ЛЕГКО Настраивать Функции VPN соединения с Вашим Интернетом: - Автоматически Блокировать Интернет Соединения при Разрыве Связи с ВПН. - Автоматическое Соединение с ВПН при Включение Интернета. 4 - Компания принимает Все Виды Oплаты в Автома |
| SweeneJealiltUi | 23.01.2012 14:16 |
| Продвижение статьями – самый эффективный и безопасный способ раскрутки сайта. Ссылка в статье окружена тематическим текстом, индексируется одновременно с появлением новой странички и размещается навсегда. Именно для обмена статьями в первую очередь и был создан наш SEOClub. Становясь участником нашего клуба вы получаете: Возможность ежемесячного бесплатного обмена статьями с десятками проверенных сайтов. Даже имея один сайт вы можете размещать статьи на сайтах в Яндекс Каталоге. Обмен в клубе проходит через панель что значительно ускоряет как добавление статей, так и слежение за статистикой по уже размещенным статьям. Хороший способ поднять тИЦ На заре образования клуба при 55 участниках в сетку сайтов было добавлено более 160 площадок. Число участников постоянно растет, соответсвенно растет колличество площадок для обмена статьями. Средниц тИЦ площадки – 30, максимальный – свыше 400. Собранная база сайтов позволяет за 1-2 АПа получить тИЦ 30-40. Условия: Каждый участник должен предоставить одну или несколько площадок для публикации статей. Принимаются не только сайты в ЯК, но и сайты без тИЦ старше 3 месяцев и имеющие в индексе Яндекса более 100 страниц. Сайты на бесплатных хостингах и блоговых платформах не принимаются. Неактивные участники, не размещающие статьи на своих сайтах, а также злостные нарушители, исключаются посредством всеобщего голосован |
| Knopkliityh | 06.02.2012 01:17 |
| Создавая сайт (www.allserialsonline.com), мы учли все пожелания и предпочтения, которыми руководствуются люди при выборе сериалов. |
| Deelfundondug | 07.02.2012 21:04 |
| В потоке информации. Фальсифакация РОССИУС ХОРОХОРДИН выборов, митинги, последние игры ЛЧ, социальная реклама и еще эта куросовая.. |
| CenoHonoSnite | 10.02.2012 09:54 |
| все хоть живы остались?) RT @burmatoff на Лубянке толпа РОССИУС Хорохордин из трех оппозиционеров сходила на стенку #чп скачать #5dec #5дек #выборы #Москвасейчас |
| buy cheap oem software | 12.02.2012 05:44 |
| OaZRyA Hello! Read the pages not for the first day. Yes, the connection speed is not good. How can I subscribe? I would like to read you in the future!... |
| buy cheap oem software | 12.02.2012 05:44 |
| FboEYw See it for the first time!!... |
| buy cheap oem software | 12.02.2012 05:45 |
| NwbSkG I almost accidentally visited to this site, but stayed here for a long time. Stayed because everything was very interesting. Surely will share with all my friends!... |
| buy oem software | 12.02.2012 05:45 |
| X9N5eM Gripping! I would like to listen to the experts` views on the subject!!... |
| cheap oem software | 12.02.2012 05:45 |
| xRNZuB I must admit, the webmaster has written cool..! |
| buy oem software | 12.02.2012 05:46 |
| 8p10Jt Pleased to read intelligent thoughts in Russian. I`ve been living in England for already 5 years!... |
| Unknown | 15.02.2012 10:50 |
| Unknown message |
| Discount OEM Software | 08.03.2012 05:54 |
| 89bGEF Very neat blog.Really looking forward to read more. Really Great. |
| Buy Cheap OEM Software | 08.03.2012 08:43 |
| siW5Xn Thanks a lot for the post.Much thanks again. Really Great. |
| Buy Cheap OEM Software | 08.03.2012 08:44 |
| Vg5A8k Awesome blog.Thanks Again. Keep writing. |
| Microsoft OEM Software | 08.03.2012 13:04 |
| Hz6RQM Really enjoyed this blog article.Thanks Again. Great. |
| Buy Cheap OEM Software | 08.03.2012 17:34 |
| 2NnUbH A big thank you for your article post.Really looking forward to read more. Awesome. |
| Adobe OEM Software | 08.03.2012 17:34 |
| MkokI0 Thanks-a-mundo for the blog post.Thanks Again. Really Great. |
| laptop notebook | 14.04.2012 03:24 |
| Im obliged for the blog.Really looking forward to read more. Keep writing. |
| laptop notebook | 15.04.2012 11:00 |
| HQvnDj Im obliged for the blog.Thanks Again. Want more. |
| kitayinfopost | 15.05.2012 00:42 |
| "Посещение выставок в Китае, стоит-ли и почему." Первый раз ваш покорный слуга был на выставке в Гуанчжоу кажется в 2002 году. После 2х лет успешного сотрудничества с поставщиками я был не уверен что мне предлагают лучшие цены, и в один прекрасный день лета 2002-го года я одел галстук, купил авиабилеты и "рванул" . Грандиозные корпуса Canton Fair производили наиприятнейшие впечатления, чего не скажешь о моих поисках и достижениях. А оказалась что цели моих поставщиков прямопротивоположны моим - если я прилетел найдти "подешевле" или "получше", то они - найдти "новых хороших клиентов" и продать "подороже" (буквально в 2 раза %). Таким образом наши интересы слегка разошлись. И дело в том, что выставки в Китае - платные и достаточно дорогие мероприятия для участников (в Гуанчжоу даже с "buyer"-ов брали 100 юаней за пропуск.) Далее, было замечено что места дислокации многих компаний и направления деятельности не совпадали местам нахождения типичным промышленным кластерам данной продукции, то-есть являлись посредниками. Как выяснилось в последствии многие предприятия не желают и не имеют потребности учавствовать в выставках, так как уже существуют наработанные связи импортно-экспортными компаниями, локальными и междонородными дилерами-представителями или свежими выпускниками-посредниками которые готовы продвигать продукцию предприятий за скромные 5-10-20% добавленной прибыли. Так как-как же выйти на китайское предприятие минуя все "круги ада" ? Проще не куда - узнать где о |
| janeqingdao | 15.05.2012 05:32 |
| Лечение в Китае, г. Циндао, хорошие отзывы. Евгения: jane @ china0001.info |
| ЖеняЦиндао | 15.05.2012 17:40 |
| Лечение в Китае, г. Циндао, хорошие отзывы. Евгения: jane@china0001.info |
| BruibiaQuasia | 16.05.2012 15:27 |
| ОДНОКЛАССНИКИ ЗНАКОМСТВА |
| Stankozavr | 16.05.2012 18:45 |
| Станкозавр ltd - китайская компания поставляет оборудование, станки, линии без посредников из Китая, Циндао. Экструдеры, экструзионные линии PP, PE, PVC, термопластавтоматы, вспомогательное оборудование, оборудование по переработки древесины, дробилки, мельницы, котлы для переработки шин, резины, пескоструйное и дробеметное (пескоструи , дробеметы) оборудование, оборудование для производства пленки, битумной гидроизоляции, линии SBS, вулканизационные прессы, станки с ЦПУ (CNC станки), гильотины и другое. - Как нас найти ? Не тормози - Яндексни ! Stankozavr |


