PHP中的函数

PHP中的函数

本文是我着名的“ 快速PHP教程 ”系列的延续 。 我已经停止写作最后,只有6年:P,因为我的创业风险。 感谢全球所有粉丝和学生的反馈和支持。

那么功能在程序设计中被认为是一个复杂的话题,许多新手认为这将使他们成为掌握他们的手脚。 但标记我的话,标志他们 - 功能是你的朋友,他们是编程学习中最简单和最有效的事情之一。

实际世界示例1:

记住这些一分钟的数码照片实验室,他们使您的照片,并给你一套八或四张照片只需点击一下。 那么谁在做一些图像增强软件来安排照片来修复照明和对比度的部分,将它们排列四到八个,然后打印呢? 简单来说,他们的软件有一个“功能”,通过点击“调用”来完成这一切。

概要:

INPUT: (PHOTO,QUANTITY即4或8)

加工:加强图像的对比度和照明等级,并根据所需数量准备打印

输出:打印安装好的照片并切入所需的数量。

实际世界示例2:

功能的最简单的例子,在现实生活中,是你简单的炸薯条刀。 你只需要把马铃薯放在里面,就可以将马铃薯转换成最大可能的炸薯条,具有特定的尺寸和形状。

概要:

你可以猜测这个例子的INPUT,PROCESSING和OUTPUT吗?

是的,很好,

输入:在切纸机中放入馅饼

加工:根据预先设计的形状和尺寸将馅饼切片

输出:生产所需的法国新鲜食品。

让我们用现实世界的这些概念跳到编程世界。

什么是功能?

一组执行某个任务的代码/指令,当被调用时。

为什么我们需要功能?

当您必须一次又一次执行相同的任务时,您可以重用代码。 功能也使您的代码维护变得简单而简单。 代码是面向对象编程的一个组成部分。

良好的编程实践:一个函数一次只能执行一个特定任务,以消除歧义,使其独立。 例如你会惊讶地在星巴克咖啡店买比萨饼:)

你看,我告诉你,功能是最容易理解的事情之一。 现在让我们来了解PHP中的函数。

在PHP中,您定义如下的函数:

functionName (INPUT) {
PROCESSING
generate OUTPUT
}

PHP函数的快速示例:

在PHP中编写一个打印您的网站名称的函数:

<?php
function printWebsiteName() {
echo "YOUR WEBSITE NAME";
}
?>

你可以在你的php代码中的“任何地方”调用这个函数

<?php
printWebsiteName();
?>

我说“任何地方”,因为与其他严格的编程语言不同,在PHP中,您不一定在调用它之前定义函数体。

记住,尝试编写函数以最简单的形式生成输出,以便对其输出进行最大程度的控制,换句话说,不要使用PHP(PHP)进行混合演示(HTML / CSS ETC)。 考虑一种情况,您必须在同一页面中以两种颜色(即黑色和白色)打印您的网站名称。

一种方法是在您的函数中编写格式代码,如

<?php
function printWebsiteName() {
// #000 for black colour
echo "<font color='#000'> YOUR WEBSITE NAME </font>" ;
}
?>

这意味着白色,即#fff你必须再写一个功能。 这意味着“REDUNDANCY”,这是一个好的编程实践中的怪物。

现在考虑另一种情况,您要在您的<title>标签中打印您的网站名称。 你能称这个上面的功能吗? ...

不要告诉我你说YES!...:-s

所以,让一个功能返回您的网站名称没有任何其他的惊喜。

<?php
function printWebsiteName() {
return "Your Website Name";
}
?>

让它打印白色:

<font color='#fff'> <?php echo printWebsiteName(); ?> </font>

对于黑色:

<font color='#000'> <?php echo printWebsiteName(); ?> </font>

要在标题标签中使用

<title> <?php echo printWebsiteName(); ?> </title>

你看到函数调用是一样的,但是它正在做三个不同的工作,因为,

  1. 功能不使用Presentation / HTML
  2. 它只执行一个任务,即返回网站名称

在深入了解功能之前,请在PHP中编写函数时记住一些规则

  1. 函数必须在函数名之前用KEYWORD“函数”启动
  2. 函数名可以以下划线(_)或字母开头,而不是数字
  3. 所有功能体代码必须在打开和关闭括号内“{}”
//correct
myFuncName() {
}
//correct
_myFuncName() {
}
//incorrect
8myFuncName() {
}

在功能中使用参数:

参数是INPUT。 您可以传递所有PHP数据类型作为函数参数。 让我们写一个需要两个数字并显示其附加结果的函数,

<?php
function addTwoNumbers($number1, $number2) {
echo $number1 + $number2;
}
//passing two digits in the function call
addTwoNumber(2,2);

你知道这个函数调用的结果吗? 呃,如果你说4,你错了,恐怕。

如果仔细观察,我在函数调用中写了WRONG函数名。 我的函数调用是addTwoNumber ,而函数名称结束于's'即addTwoNumbers

PHP会抛出一个未定义的函数的警告。

所以让我们进行正确的通话:

addTwoNumbers(2,2);

现在这个显示4。

提示:一些程序员在其CALL中将其粘贴函数名从其DEFINITION中复制,同时编码以避免任何打字错误,这在大型项目(尤其是OOP)工作时成为正常的错误。

提示:为了使您的代码更加明智地编写有意义的函数名称,例如“addTwoNumbers”是一个比“funcadd2”更好的函数名称

提示:“ addTwoNumbers”比“addtwonumbers”或“add2numbers”更易读

从学习过程开始就遵循标准的编程技巧,使他们成为习惯,这是一个很好的编程习惯。

通过阵列功能:

将数组作为参数传递给函数与传递变量相同。 我已经说过你可以传递任何类型的PHP数据类型作为函数的参数,甚至图像,文件句柄,对象等

$languages = array('php','asp','C');
function displayLanguages($arrLanguages) {
foreach($arrLanguages as $langName) {
echo $langName . " - ";
} //end foreach
} //end function

提示:评论你的代码可以节省你很多时间,在你的实际生活中,可能是你的工作。

让#现在调用这个函数:

displayLanguages($languages);

可选参数:

您的函数名称可以具有可选参数,即它可能也可能不会从函数调用传递。 例如,在上述功能中,您可以显示所有的langaug,但也显示您最喜欢的语言,但可选择发送喜欢的语言名称。

$languages = array('php','asp','C');
function displayLanguages($arrLanguages,$favorite = NULL) {
foreach($arrLanguages as $langName) {
echo $langName . " - ";
} //end foreach
if ($favorite !== NULL) {
echo "my favorite language is " . $favorite;
} //end if
} //end function

观看以下两个函数调用:

//displays only language names
displayLanguages($languages);
/*
displays favorite message as well because now $favorite has string "PHP" in
it and it is no more a NULL
*/
displayLanguages($languages,"PHP");

关于可选参数的提示:

  1. 您可以在功能参数列表中为您的OPTIONAL参数定义默认值。
  2. 总是,请集中精力,在您参数列表的最右侧定义可选参数。

要解释这里的第二点,请参阅以下代码:

function myRainbow($red, $green, $blue, $CMYK = 'whatever default value') {
// here CMYK is optional, it may or may not be passed in function call
}
function myRainbow($red, $green, $CMYK = 'whatever default value', $blue) {
// now $CMYK is no more OPTIONAL because there is one mandatory-parameter on its right.
}

提示:要比较NULL值,您还可以使用PHP内置函数is_null(),但根据基准测试比较NULL与===更快。

参考参考:

这被认为是新手最复杂的话题之一,很简单。 当您通过引用传递时,函数体内执行的任何处理将在其生命周期内影响您的变量。 例如:

$maritalStatus = "unmarried";
function welcomeToHell(&$status) {
$maritalStatus = "married";
}
echo $maritalStatus; //displays unmarried
welcomeToHell($maritalStatus);
//changes the variable $maritalStatus value in its life-scope i.e outside function
echo $maritalStatus; //displays married, and yes, I used a meaningful function name :D, jokin...

要通过引用,您可以使用&符号“&”登录功能参数定义。 因为php 5.3.0你不应该使用&登录函数调用。 如果使用,它会提供不推荐的警告。 从PHP 5.4.0它发生致命错误。 所以只用参数定义。

通过参考可以深入了解高级任务。 我已经做了很多项目,我很少使用PASS BY REFERENCE。 但是,如果您希望通过参考更深入地学习传递,请阅读PHP手册并检查用户评论

提示:在函数体内定义的变量只在函数体内保持有效。 它除了功能体之外没有效果/范围,除非如上所述通过引用。

$name = "Haroon Ahmad";
function myName($name) {
$name = "Umair Ahmad Khan";
}
echo $name; //it displays Haroon Ahmad

所以同样的变量名不会在这里做任何事情,因为函数的body的$ name是一个不同的变量,而在函数体之外是相同的名称变量。

从功能返回输出:

在高级编程中,您通常会从函数返回输出,而不是在函数体内“显示”输出。 因为在现代网络编程中,您具有独立于逻辑/处理的框架。 所以你只需要得到输出,然后将其提交给PRESENTATION代码进行格式化。

您可以从函数返回所有类型的PHP数据类型,无论是简单的字符串,变量,数组甚至对象。

您使用KEYWORD“返回”从函数返回值。

function fullName($firstName, $secondName) {
return $firstName . " " . $secondName;
}
fullName("Haroon","Ahmad");

它显示“Haroon Ahmad”

可变功能名称:

您可以使用变量来调用函数,例如:

$functionName = "add";
$functionName(); // this will call a function by the name add()
$functionName = "subtract";
$functionName(); // this will call a function by the name subtract()

但是,这可以使编码变得模糊。 所以对于我来说,除非非常需要,否则我会避免这种做法。

从另一个功能召唤功能:

您可以从另一个功能的主体调用函数。

请考虑以下代码:

function add($one,$two) {
multiply($one + $two, 2);
}
function multiply($result,$multiplyBy) {
echo $result * $multiplyBy;
}
add(2,2); //displays 8

使用作为其他参数的函数的返回值:

您可以使用函数的返回值作为另一个函数调用的参数传递。 请参阅以下示例:

function add($one,$two) {
return($one + $two);
}
function multiply($result) {
echo $result *  10;
}

乘(add(2,2)); //显示40

从自己的身体呼唤一个功能:

现在让我把你的大脑测试 - 以下代码的输出是什么?

function add($one,$two = NULL) {
if ($two !== NULL) {
return add($one);
} else {
return $one + $two;
}
}
echo add(2,2);

呃棘手,不是吗? 你会在ZCE考试中找到这样的问题。 它的输出是2.但不管这个例子的复杂性,我想告诉你,你可以从自己的身体调用一个函数。 像这里add()在自己的身体内被调用。

什么是PHP内置函数?

PHP有很多内置的功能。 它们已被定义为执行某些任务。 您只需要使用正确的参数调用它们来执行所需的任务。 出口(); 其中之一就是停止执行你的脚本。

有关内置函数的更多详细信息,请参阅“ PHP函数手册 ”。

implode和is_array内置函数:

implode()将数组转换为具有粘合值的字符串。

is_array()是很好的,你会使用它很多。 它发现提供的变量是一个数组或不是。

在下面的一些复杂的例子中,我将使用他们两个来展示他们的工作。

function fullName($firstName,$lastName = array()) {
return (is_array($lastName)) ? $firstName . ' ' . implode(' ',$lastName) : $fistName;
}
echo fullName("haroon") . "<br />"; //displays Haroon
echo fullName("haroon",array("Ahmad","Khan")); //displays Haroon Ahmad Khan

您可以学习explode() ,另一个有用的内置函数,您将在实际项目中使用很多。

有了这个,我想我们已经到了PHP函数讨论的最后。 这一定会给你一个PHP如何处理函数的基本概念。 在我的面向对象编程教程中,我将进一步讨论这个讨论,并给出一些非常详细的函数示例。 高级和实用编程都是关于使用功能。 所以练习他们尽可能多地清除所有的概念,阅读PHP手册,并随时回覆我所有的问题和意见。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏