Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Return в собственной функции
цитата
01/11/14 в 19:52
 Lexikon
написал функцию, отдаю ей определенные значения, а она создает или перезаписывает файл согласно данным.
Возник вопрос, функция должна, что то отдавать основному скрипту, который к ней обращается или это не требуется?

грубый пример

function myFile($data, $fileName){
file_put_contents($fileName, $data);
}

вроде как функция отработала, но х.з.
как правильно поступить?
Спасибо!
цитата
01/11/14 в 20:15
 ibiz
можно так:
Код:
function myFile($data, $fileName){
return file_put_contents($fileName, $data);
}

if(myFile($data, $fileName)!==false) {it's ok!}
else {bad}
цитата
01/11/14 в 20:17
 Stek
Если результат работы функции тебя не интересует, то и можно ничего не отдавать. Т.е. смысла нет выполнять операцию, которая не требуется. Ну разве для красоты и на будущее "а вдруг когда понадобиться".
цитата
01/11/14 в 20:17
 ibiz
аа, ну и вопрос не верный: "функция должна, что то отдавать основному скрипту", надо по-другому - "скрипт не продолжит выполняться до тех пор, пока не отработает функция"
цитата
01/11/14 в 21:08
 ivango
Функция должна возвращать значение... на то она и функция.
В твоем случае это, к примеру, может быть 1 если всё удалось, или 0 - если что-то пошло не так... или, как ibiz нписал (то ж самое, в принципе).

Т.е. нельзя сказать, что ты написал неправильно... но не красиво, и не по понятиям icon_smile.gif
цитата
01/11/14 в 21:19
 ibiz
ivango писал:
Функция должна возвращать значение... на то она и функция.
В твоем случае это, к примеру, может быть 1 если всё удалось, или 0 - если что-то пошло не так... или, как ibiz нписал (то ж самое, в принципе).

Т.е. нельзя сказать, что ты написал неправильно... но не красиво, и не по понятиям icon_smile.gif


только надо внимательнее смотреть и знать, что функция file_put_contents возвращает, например: <? echo @file_put_contents("test.txt","");?> вернет 0, без ошибок, а эта <? echo @file_put_contents("test.txt","12");?> уже вернет 2 и тоже без ошибок trollface.png
цитата
01/11/14 в 21:34
 Lexikon
т.е. по ходу функции, если она отработала до конца, она должна выдать что-то основному скрипту через return
Типа, я всё сделала, всё ок или была ошибка и как бы продолжение дальнейших действий не целесообразно.
Т.е. TRUE - это всё отлично
и FALSE - был косяк.
Тогда такой вопрос, как правильно сделать запись чтоб функция отдавала через return основному скрипту либо TRUE либо FALSE.

return TRUE; или return bool(TRUE);
или как то иначе?
цитата
01/11/14 в 21:39
 Lexikon
тем самым возвращая в основной скрипт true или false мы можем убедиться стоит ли продолжать работу дальше или остановиться.
цитата
01/11/14 в 21:47
 ibiz
Lexikon писал:

Тогда такой вопрос, как правильно сделать запись чтоб функция отдавала через return основному скрипту либо TRUE либо FALSE.


вот же:
Код:
function myFile($data, $fileName){
return file_put_contents($fileName, $data);
}
//если функция отработала без ошибок, то ок
if(myFile($data, $fileName)!==false) {it's ok!}
else {bad}


TRUE она не возвращает, а возвращает кол-во записанных в файл символов или FALSE при ощибке
цитата
01/11/14 в 22:14
 Дартаньян
зачем выносить это все в отдельную функцию если это можно задать в аргументе if?
цитата
02/11/14 в 07:40
 Lexikon
ibiz писал:
вот же:
Код:
function myFile($data, $fileName){
return file_put_contents($fileName, $data);
}
//если функция отработала без ошибок, то ок
if(myFile($data, $fileName)!==false) {it's ok!}
else {bad}


TRUE она не возвращает, а возвращает кол-во записанных в файл символов или FALSE при ощибке


меня просто смутил тот момент, что в данном примере тело функции в одну строку и как раз return и возвращает эту одну строку, а если строк много.

Есть еще такой момент:

<?php

$menuObject = "рутекст";

echo "<i><a href=\"./page/?subcat=".urlencode($menuObject)."\">".$menuObject."</a></i><br />";

?>      

Почему если это вывожу на экран, "рутекст" кодируется, если навести курсор на саму ссылку, то там "рутекст" не кодирован и соответственно когда кликаю по такой ссылке, параметр соответственно передается тоже не кодированым.
цитата
02/11/14 в 08:01
 SAV
Lexikon писал:
Возник вопрос, функция должна, что то отдавать основному скрипту, который к ней обращается или это не требуется?

не требуется

http://php.net/manual/ru/functions.returning-values.php
цитата
02/11/14 в 08:47
 ibiz
Lexikon писал:

Есть еще такой момент:

Код:
<?php

$menuObject = "рутекст";

echo "<i><a href=\"./page/?subcat=".urlencode($menuObject)."\">".$menuObject."</a></i><br />";

?>      


Почему если это вывожу на экран, "рутекст" кодируется, если навести курсор на саму ссылку, то там "рутекст" не кодирован и соответственно когда кликаю по такой ссылке, параметр соответственно передается тоже не кодированым.


с рутекстом надо проверять кодировки, лучше если это везде будет UTF-8, как стандарт, в том числе весь текст в исходнике
цитата
02/11/14 в 18:08
 Lexikon
так в том то и дело, что везде UTF-8.
Х.з. в чем проблема.
цитата
02/11/14 в 18:30
 Stek
Lexikon писал:
Почему если это вывожу на экран, "рутекст" кодируется, если навести курсор на саму ссылку, то там "рутекст" не кодирован и соответственно когда кликаю по такой ссылке, параметр соответственно передается тоже не кодированым.

Имхо это от браузеров зависит уже.
цитата
03/11/14 в 10:53
 freeek
Код:
function myFile($data, $fileName) {
    return file_put_contents($fileName, $data) !== FALSE;
}
icon_smile.gif


Эта страница в полной версии