Функции PHP

Код машин 12 дек. 2021 г.

Итак, теперь мы поговорим о написании функций и о том, как мы можем разбить функциональность на несколько файлов.
Итак, нам нужно узнать о функциях отчасти потому, что мы собираемся их написать, но в основном потому, что мы собираемся их использовать.
А PHP - менее объектно-ориентированный язык программирования, чем некоторые, и поэтому мы постоянно используем функции. Но мы также пишем свои собственные функции, и мы собираемся охватить обе эти вещи.

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

Теперь я обнаружил, что у меня на самом деле есть автономный просмотрщик документации для PHP, потому что я не запоминаю все функции, а функций так много. Так, например, я никогда не знаю, что такое функция замены для PHP. Я знаю, что у меня есть струна, и я должен что-то в ней заменить. Итак, я спрашиваю, что это за функция замены снова? Итак, я набираю это в Google снова, и снова, и снова. Google - мой лучший друг, когда я пишу на PHP. Теперь, когда я пробыл в PHP день или два, я вроде как вспоминаю основные вещи. Но документация, которую они имеют в Интернете для PHP, является выдающейся и очень хороша для получения того, что вам нужно. Еще одна вещь, которая действительно классная, поэтому, если вы прокрутите эти страницы вниз, вы часто найдете образец кода, предоставленный пользователями. Итак, документация по PHP великолепна. Но вы также можете скачать, если вы находитесь в самолете или у вас нет хорошего сетевого подключения, вы можете загрузить средство просмотра документации PHP. И это очень полезно.

Итак, вот несколько примеров функций, которые мы собираемся использовать. Это строковые функции. Строки не являются объектно-ориентированными в PHP. Итак, мы как бы следуем шаблону передачи параметра и получения результата обратно. И вот это и есть стрев. И PHP довольно хорошо префиксирует все это с помощью str, чтобы сказать вам, что речь идет о строках. Так что это обращение вспять. Зачем вам нужен реверс? На самом деле я им не пользуюсь. Но вот ты где. Это очень захватывающе, потому что это переворачивает ситуацию. Просто повторяю. Почему мы хотим это сделать? Я не знаю. Но мы передаем строку и говорим повторить ее дважды. Я поставил здесь пробел, чтобы было модно, модно. Перевожу что-то в верхний регистр, что я делаю все время. Ура. И strlen, какой длины строка. Так что это всего лишь пример некоторых строковых функций, которые вы могли бы использовать.

Чтобы определить вашу собственную функцию, мы используем ключевое слово function, за которым следует имя функции, за которым следуют необязательные параметры, за которыми следуют фигурные скобки, и, конечно, здесь могут быть дополнительные отступы и дополнительные фигурные скобки. И тогда это тело - функция. И, как и во всех функциональных ситуациях, этот код не выполняется, он запоминается и эффективно расширяет язык с помощью нового ключевого слова. Таким образом, он копирует все это куда-то в greet, и это как бы имя переменной. И тогда ты сможешь позвонить ему. Таким образом, эта функция определяется один раз, а затем вызывается дважды. Поэтому он запускает его, поднимается и запускает, возвращается вниз, запускает снова. Так что это повторяется дважды. Беги, беги. Так что из этого нет никакого вывода, потому что таково его определение.

Вы можете выбрать имена функций. Они не начинаются со знака доллара. Вы можете начать их с подчеркивания. Опять же, мы склонны резервировать подчеркивание для чего-то вроде библиотеки. Мы не склонны, мы склонны избегать подчеркиваний в нашем основном коде. Вы можете начать с подчеркивания букв, букв и цифр, так что это почти одно и то же. Избегайте встроенных имен функций. Случай действительно имеет значение, но я думаю, что было бы ошибкой относиться к функции, называемой, вы знаете, zap и Zap по-разному. Так что не пользуйся этим преимуществом. Это не имеет значения. Почему? Я не знаю.

Возвращаемые значения, так же как языки на основе C, используют ключевое слово return, и поэтому в основном говорится, что если эта функция вызывается при вычислении выражения, то в этом случае она объединяет все, что возвращает приветствие функции, со строкой Glenn, и поэтому она входит, возвращает ее, и поэтому это выражение здесь становится остаточным значением, которое находится в этом выражении. Таким образом, это просто означает, что как только запускается приветствие, появляется "привет", а затем выполняется эта конкатенация, а затем идет "Привет, Гленн". А потом он запускается снова, приветствие возвращается, и это Привет, Салли. Итак, вопрос объединения - это Привет, Салли.

Вы также можете передать параметры. Параметры имеют знак доллара. В имени функции нет знака доллара, но в параметрах есть. И, как и все параметры и функции, нормальная вещь заключается в том, что они являются своего рода временной копией входящего, и этот язык доллара существует только во время выполнения функции. И поэтому в данном случае мы собираемся сделать это объединение приветствий Гленну. Итак, Хауди начинает бежать. Итак, es находится где-то здесь, и лэнг указывает на es, затем запускается этот код. И вот теперь этот экземпляр, это выполнение функции, мы увидим, как испанский возвращает Ola, затем это будет сделано, а затем в следующий раз, правильно, он снова запускает ее, и в этом случае fr здесь, и ланг указывает на fr, он запускается снова. Это ложь, но это правда. Таким образом, он возвращает Bonjour, и поэтому мы получаем остаточную стоимость здесь. Это возвращается сюда, и мы объединяем это. Бонжур Салли. Ладно? Таким образом, эта переменная фактически является псевдонимом. Еще одна действительно элегантная часть PHP, которая мне очень нравится, - это концепция необязательных аргументов, и если вы поместите оператор присваивания здесь в определение функции, это станет значением по умолчанию. Поэтому в этом случае, если вы его не укажете, то он принимает es в качестве значения для lang. Если вы укажете его, то он укажет на fr и запустится снова. Так что это дефолт. Я думаю, что это такой же красивый и элегантный синтаксис для определения аргумента по умолчанию, как и любой язык программирования. Это подчеркивает тот факт, что псевдоним этой переменной находится только внутри функции и является псевдонимом исходного значения. Итак, у нас вал равен 10, так что здесь есть вал в долларах, во внешнем мире он равен 10. Хорошо. А затем мы передаем val в функцию. Итак, интересная вещь заключается в том, как это действительно работает, это своего рода копия 10 здесь, а затем указывает на нее псевдоним, то есть псевдоним не указывает на эту 10. Он указывает на эту копию. Так что теперь я действительно могу это изменить. Поэтому я говорю, что псевдоним равен псевдониму, умноженному на два. Так что это ставит 20, и это ставит 20 здесь. Итак, в этом маленьком местечке есть 20, но здесь нет 20. Это отдельно. Так что это как бы отделяет их друг от друга. Он действительно изолирует брандмауэры, дымоходы, он не позволяет этой функции вмешиваться в вещи вне себя, включая ее аргументы, ее параметры.

Итак, это называется копией. Таким образом, параметры копируются, а не фактически ссылаются. Ладно? Итак, в этом случае, если у нас значение val равно 10, мы передаем его, и мы видим этот dval, который является возвращаемой переменной, поэтому dval равен 20, но исходная переменная вернулась из нее, которая не изменилась. Звоните по значению. Сейчас. Многие языки программирования, которые вы используете, называются вызовом по значению, хотя некоторые языки программирования, например, если это массив, то он вызывается по ссылке, а если это скаляр, то он вызывается по значению. Но PHP предоставляет нам возможность вызова по ссылке. Сказать, что мы не хотим, чтобы этот параметр был псевдонимом. Мы хотим, чтобы он указывал на оригинал. И мы делаем это, просто добавляя немного амперсанда. Таким образом, функция фактически заявляет о своем намерении иметь возможность изменять это. Мы ничего не меняем в последовательности вызовов. Итак, что здесь происходит, так это то, что здесь есть $val. А потом мы вставляем в него 10, а потом называем его тройным. И затем это говорит о том, что вместо создания копии реальная вещь является вторым псевдонимом этой переменной. Поэтому, когда я собираюсь умножить это на три, десять раз три равно 30, и я добавляю 30 в реальную вещь, я действительно изменяю эту переменную. Эта переменная выходит за рамки данной функции. Таким образом, у нас как бы есть стена вокруг этой функции. Упс, но в стене есть крошечный пролом, крошечный дверной проем в стене, и мы выходим и меняем эту переменную. Нам не нравится проникать в другие вещи, но мы можем прикоснуться к фактическому содержанию ценности. Так что это называется вызовом по ссылке, потому что на самом деле это первый вызов исходной переменной, а не предыдущий пример, это вызов по значению, что означает, что мы получаем копию и получаем значение в переменной, но мы не получаем ссылку на саму переменную, и поэтому, когда мы возвращаемся, мы распечатываем 30, потому что они были утроены. Звоните по ссылке. Это своего рода более продвинутая концепция. Во многих языках даже этого нет. & произошло от C, вот как C обычно это делал. Синтаксис для вызова по ссылке немного отличается, потому что у вас нет переменных, которые начинаются со знака доллара. И на самом деле, как вы используете его внутри функции, но мы не, это не класс C, это класс PHP. Теперь причина, по которой это важно, заключается в том, что, когда вы читаете документацию, вы можете прочитать документацию, и вы обнаружите, что, если вы видите этот амперсанд, скажите: "О, это интересно". Это означает, что этот амперсанд означает, что он изменит массив. И что интересно, если вы передаете массив в функцию, по умолчанию выполняется вызов по значению. И на самом деле это отличается от многих языков. Это значит, что это копия. Но если вы скажете амперсанд, то это фактически вызов по ссылке, и вы можете решить, что эта функция внутри этой функции сортировки что-то сделает с массивом. В некоторых языках вы фактически возвращаете новый массив. В этом вы разберетесь прямо здесь. И поэтому это просто для справки. И поэтому вы должны уметь читать, когда видите это &s, вы просто как бип-бип-бип-бип.

Источник:
Building Web Applications in PHP

Теги

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