Помогите разобраться в нужности функций.

seosniks
На сайте с 13.08.2007
Offline
389
925

Всем хорошего настроения, и доброго вечера. В общем за 4 года так и не смог понять выгоду Функций, помогите пожалуйста понять в чем выгода. Пример ниже

Рассмотрим простой пример использования функции. Предположим, вы хотите создать функцию для вывода лицензионной информации на web-странице: 


function display_copyright() { 


print "Copyright © 2001 PHP-Powered Recipes. All Rights Reserved.";

}


Если ваш web-сайт состоит из нескольких страниц, достаточно вызвать эту функцию в конце каждой страницы -- и вам не придется заново переписывать один и тот же текст. А когда наступит 2002 год, одно простое изменение текста, выводимого этой функцией, приведет к автоматическому обновлению всех страниц. Если бы не преимущества функционального программирования, вам пришлось бы вручную редактировать все страницы, на которых выводится лицензионная информация.

Рассмотрим разновидность функции
display_copyright()
, которой при вызове передается параметр. Предположим, вы отвечаете за администрирование нескольких web-сайтов, каждому из которых присвоено отдельное имя. На каждом сайте имеется собственный административный сценарий с несколькими переменными, относящимися к этому сайту; к их числу принадлежит переменная
$site_name
с именем

сайта. В этом случае функцию
display_copyright()
можно записать следующим образом:

function display_copyright($site_name) {

print "Copyright © 2001 $site_name. All Rights Reserved.";

}


Переменная $site_name, значение которой присваивается за пределами display_copy-right(), передается функции в качестве параметра. Переданное значение можно использовать и модифицировать в любом месте функции, однако любые изменения будут действовать лишь внутри этой функции. Впрочем, специальные ключевые слова позволяют сделать так, чтобы изменения параметров распространялись и за пределы display_copyright(). Эти ключевые слова были представлены в главе 2, в общем обзоре области видимости переменных и ее отношения к функциям.

Но я же могу просто подключить файл конфига например

<?php 

include_once("config.php");
?>

Сам файл конфига

<?php 

//Конфиг
$site_name="Copyright &copy; 2001 http://yandex.ru All Rights Reserved.";

?>

в шаблоне вывести просто переменую $site_name и не мучаться.

или так нарпимер

в конфиге

$site_name="http://yandex.ru"; 

Copyright &copy; 2001 <?php echo $site_name?>    All Rights Reserved

или этот код

<?php

function rfile($url) {

$f = @fopen($url,"r");
$content = @fread($f,filesize($url));
fclose($f);
return $content;

}

echo rfile("file.txt");

Почему не использовать так

$url='file.txt';

$f = @fopen($url,"r");
$content = @fread($f,filesize($url));
fclose($f);

Знаю что для профи моя тема покажется глупой, но увы я так и не понял как работать с функциями, и в чем их преимущество, короме того что по названию функции можно понять ее назначение, или вывести в отдельный файл.

Текст взят от седова i-vd.org.ru/books/php/functions.shtml

[umka]
На сайте с 25.05.2008
Offline
456
#1

Функции нужны тогда, когда часто выполняется один и тот же кусок кода, который возвращает какой-то результат.

Если код простой, как в вашем примере, то разницы никакой, что инклудить файл с функцией, а потом вызывать её, что сразу инклудить некий footer (тут даже экономится время на вызов функции)).

Лог в помощь!
[Удален]
#2

Все от задач зависит. Конечно просто печатать текст функцией это глупо.

P
На сайте с 19.03.2009
Offline
17
#3

Если просто сказать то функция пишется для многократного его использования. Например Вам надо вывести какой-нить приветственный текст. Конечно, все тексты можно растолкать по файлам и инклудить их всё время, но это не удобно и ...

функцию можно вызывать с параметрами. Например нам этот приветственный текст нужно персонализировать. Хотим каждому пользователю писать что-нить типа "Дорогой, Иван Иваныч ..." Тогда вызывая функцию в качестве параметра можно её передавать Имя и Фамилию человека, а на выходе получать персонализированное приветсвтие.

Наглядно:

function print_text($name, $lastname) {
echo "Дорогой, $name $lastname! А здесь уже идёт сам текст";
}

Теперь вызывая функцию и подставляя вместо $name и $lastname различные имена, будем получать различные тексты.

Помогу с вёрсткой, html, css, js, jquery, php, mysql ($) icq 8938933 Быстрый, удобный и недорогой хостинг (http://sweb.ru/p17046) Виза в Великобританию (http://www.englishexpert.ru/velikobritaniya/viza/viza-v-velikobritaniu/)
seosniks
На сайте с 13.08.2007
Offline
389
#4
poyzn:


Наглядно:
function print_text($name, $lastname) {

echo "Дорогой, $name $lastname! А здесь уже идёт сам текст";
}


Теперь вызывая функцию и подставляя вместо $name и $lastname различные имена, будем получать различные тексты.

Спасибо Вам за пример. Только вот не понятно про это

Теперь вызывая функцию и подставляя вместо $name и $lastname различные имена, будем получать различные тексты.

Тоесть вы имели ввиду в место

$name и $lastname

к примеру $a $b $c итд?

Я выгоду функции вижу только в удобстве восприятия кода, блок кода для конкретной задачи.

Но если я создал функцию то в любом случае придется инклюдить файл с функцией, если ее надо вызвать в разных файлах.

P
На сайте с 19.03.2009
Offline
17
#5

нет, вызывая функцию как: print_text('Сан', 'Саныч');

у нас будет выводится текст: "Дорогой, Сан Саныч! А здесь уже идёт сам текст"

а если: print_text('Сидр', 'Сидорович');

то: "Дорогой, Сидр Сидорович! А здесь уже идёт сам текст"

а если: print_text();

то: "Дорогой, ! А здесь уже идёт сам текст"

poyzn добавил 09.10.2010 в 21:18

phpdude:
контр пример - посчитайте мне без функций факторил ста, я пока пошел чай заварю да кино на пару недель накачаю :)

Да, еще есть рекурсивные функции, которые сами себя вызывают, если допустим Вам надо какое-то определённое действие несколько раз выполнять. Вы же не будете сто раз инклудить файл.

Shoo[rik]
На сайте с 12.04.2008
Offline
66
#6

Читаю внимательно, тоже никак в функциях не мог толком разобраться.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#7
В общем за 4 года так и не смог понять выгоду Функций,

Ну значит вы решали проблемы все 4-ре года на уровне:

echo 'Hello World';

И Вам это просто не пригождается. Вы давайте ещё тут спросите: "А зачем классы?"

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Apach47
На сайте с 28.10.2008
Offline
74
#8

ТС, знайте принцип "Разделяй и властвуй"? Вот его реализуют функции))

1)Функции позволяют улучшить управляемость программы, конечно, если речь идет не о программе в 1 строку, тип echo "Hellow World!"

2)Функции могут возвращать результат, зависящий от параметров, переданных им

3)Функции можно добавлять/удалять/модифицировать более безболезненно для программы и программиста

И опыт - сын ошибок трудных... И гений - парадоксов труд... И случай бог изобретатель... (А.С.Пушкин)
pikasso
На сайте с 27.01.2008
Offline
150
#9

оффтоп:

LEOnidUKG:
Вы давайте ещё тут спросите: "А зачем классы?"

Сразу вспоминается старая шутка:

Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать! ;)

seosniks
На сайте с 13.08.2007
Offline
389
#10
LEOnidUKG:
Ну значит вы решали проблемы все 4-ре года на уровне:
echo 'Hello World';

И Вам это просто не пригождается. Вы давайте ещё тут спросите: "А зачем классы?"

нУ классами тоже не пользовался никогда, вы правы все задачи решал с помощью

echo 'Hello World :D Хотя одну функцию использую всегда.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий