搜索热词

WordPress中文社区 > 专栏 > WP终身学习者 > WordPress开发PHP学习之:理解PHP的return

WordPress开发PHP学习之:理解PHP的return

发布于02月18日 被浏览 891 次

欢迎使用PHP返回时使用此摘要!本文将继续我们的系列文章,解释用于WordPress开发的PHP基础知识。

我们对PHP返回的讨论建立在前面文章中讨论的两个主题上:

PHP函数。函数是return很有用的地方,因此您需要了解PHP函数的基本知识以及它们的作用。

PHP的回声。echo是PHP将内容输出到页面的方式,它和return是一个硬币的两面,因此,您应该再次了解它如何操作的基本知识,并进入我们对return的探索。

现在:下面是return在PHP中的工作原理,以及为什么它超级强大。

在PHP中,return是一个怎样“返回”结果的函数

让我们从理解为什么我们首先需要回归开始。

PHP通常最终会与页面相呼应,但它也做得更多

正如我们讨论的echo一样,大多数PHP的最终目的是将标记输出到用户在浏览器中看到的HTML文档中。对于非常简单的PHP使用,它真的可以只是一个“HTML便利工具”,做一些事情,比如给HTML元素序列id。

然而,以这种方式看待PHP可能会使它听起来比实际情况简单得多。在WordPress和大多数其他PHP系统中,只有一行输出的标记——“您现在登录了!你的上一次登录是在三周零两天前。”—可能反映了在数十个PHP文件中进行的数千次计算,总代码为兆字节。

换句话说,PHP肯定不会一直在页面上回响。在大多数PHP应用程序中,在数据以echo语句的形式“从前门出去”之前,数据被广泛地传递和处理。

函数需要相互沟通

在介绍PHP函数的文章中,我们提出了几个关键点,我们将在这里进行总结:

PHP函数是可定义的、可重复的“工作位”。拥有这些清晰、独立的“工作位”是防止PHP代码混在一起形成重复的、不可操作的粘合剂的关键。

通过将数据传递到函数中,可以为PHP函数提供要处理的数据。有关技术细节,请参阅本文,但主要的一点是,函数可以“给定”要处理的数据,并且它将以编写函数本身的任何方式进行处理。

这就引出了我们的下一个问题:PHP函数在处理完给定的数据之后,应该如何处理它?将它直接回显到页面是一种可能性,但肯定不是最常见的。

更经常的情况是,你想“交还”结果。也就是说,您希望将处理过的数据传递回PHP应用程序的其余部分,以便进一步处理。

这就是return所做的。在PHP和许多其他编程语言中,return是函数如何将其结果传回给“调用”(调用)它的任何代码段,在那里可以进一步处理和使用它。

代码演示:PHP如何使用return传回函数的结果

好了,别说了。让我们看一个围绕两个函数的代码示例来理解return:

echo_text(),直接回显(打印)文本。

return_text(),它不打印任何内容,但返回其结果以供进一步使用。

演示如下:

<?php

function echo_text() {
	echo 'Kittens.';
}

echo_text(); // Will print "Kittens."

$var1 = echo_text(); // Bad code. Will print "Kittens." and won't set a value for $var1.

echo $var1; // Problem. $var1 was never set, because echo_text() echos instead of returning.

function return_text() {
	return 'Puppies.';
}

$var2 = return_text(); // $var2 now has value "Puppies."

echo $var2; // Will print "Puppies." since that's the value of $var2.

echo return_text(); // Will print "Puppies." Works by getting the returned value, and immediately echoing it.

return_text(); // Bad code, does nothing. return_text() runs and returns "Puppies." but the returned value isn't used for anything.

?>

希望这个例子开始说明return是如何工作的,以及它是如何成为echo的补充:return不是将函数的结果打印到页面上,而是将这些结果返回给调用函数的任何操作,不管该操作是否定义了一个变量,一个echo语句,或者别的什么。

代码演示:使用return传回不同类型的数据

上面我们的return\u text()函数非常愚蠢:它总是返回相同的东西,字符串“Puppies”。实际上,为了使它有用,return几乎总是返回动态计算的值,这些值可以是任何PHP数据类型:string、ineger、array、object等等。我们来看几个实际例子:

<?php

function return_the_number_five() {
	return 5;
}

$var1 = 3 * return_the_number_five(); // $var1 now has value 15.

function multiply( $num1, $num2 ) {
	return $num1 * $num2;
}

$var2 = multiply( 3, 10 ); // $var2 now has value 30.

$var3 = multiply( 8, return_the_number_five() ); // $var3 now has value 40.
// This example demonstrates calling one function to get its return value, and passing that value in as an argument of another function: return_the_number_five() "becomes" its return value, 5, which is then passed into multiply().

function get_my_shopping_list() {
	return array( 'plums', 'toothpaste' );
}

$my_list = get_my_shopping_list(); // $my_list is now an array with values [ 'plums', 'toothpaste' ]
echo $list[0]; // Will print "plums"

function add_to_shopping_list( $list, $item ) {
	$list[] = $item; // This means "add $item to the end of array $list"
	return $list;
}

$my_bigger_list = add_to_shopping_list( get_my_shopping_list(), 'ice cream' );
// $my_bigger_list is now an array with values [ 'plums', 'toothpaste', 'ice cream' ]

$my_bigger_list = add_to_shopping_list( $my_bigger_list, 'shampoo' );
// $my_bigger_list is now an array with values [ 'plums', 'toothpaste', 'ice cream', 'shampoo' ]
// You can pass a variable into a function and have that function's return value change the variable
?>

如果你已经理解了上面的例子,你就有一个很好的处理返回。模式是一样的:你调用一个函数,得到它的返回值,然后用它做一些事情。

用我模糊的人脑思考,我对返回的看法是,函数“变成”它的返回值,无论它在哪里被调用。例如,return_the_number_five()在任何时候被调用时都变为5,无论它是在回送某个东西、定义一个变量的过程中调用的,甚至是作为另一个函数的参数调用的。

return和WordPress:模板标签命名

就像在任何PHP应用程序中一样,WordPress总是绝对使用return。因此,return与WordPress“相关”,就像呼吸与棒球“相关”一样:如果没有第一个,就无法想象第二个。

然而,WordPress的代码库中有一个特殊的部分,一旦你理解了echo、return和他们“硬币的两面”式的关系,整个过程就会立刻亮起来。主题是WordPress的post-template标签,特别是它们的函数命名约定,它是WordPress函数库反映PHP本身结构的一个非常令人满意的领域。

你有没有想过把ID()和get ID()区别开来?就这么简单:

<?php

// WordPress's get_the_ID() function
function get_the_ID() {
	$post = get_post(); // Get the current post
	return ! empty( $post ) ? $post->ID : false; // Return the current post's ID, or false if none
}

// WordPress's the_ID() function
function the_ID() {
	echo get_the_ID(); // Call get_the_ID() and echo the returned result - simple as that
}

?>

所以the_()和get_the_()之间的区别就是echo和return之间的区别。这对函数是适用的,比如the_content()/get_the_content()、the_title()/get_the_title(),等等,它简单地归结为回显结果或返回结果以供进一步使用。

有关这些模板标记函数的更多信息,请参阅我们关于以下主题的完整文章:

返回学习PHP

echo和return二分法,以及这两种语言结构协同工作的方式,构成了理解PHP知识的基础。这种二分法还很好地与WordPress模板标记中有用的命名约定联系在一起,这是WordPress代码库中最干净、最容易使用的部分之一。

更广泛地说,“返回值”——函数返回内容的方式,是一个几乎没有现代编程语言的概念。它们是编程本身的核心。

换句话说,你花在学习上的时间应该会为你带来丰厚的回报。

点赞 收藏 打赏 分享

0 条评论

无意义的评论将很快被删除,账号将被禁止发言。 发表评论 0/500
 
  1. 还没有任何评论,你来说两句吧