對於迄今為止一直關注本系列的人來說,您知道我們正在專門從初學者的角度來研究物件導向程式設計。
這意味著我們不僅針對那些正在研究如何開始使用該範式的人來探討該主題,而且我們正在研究構成該語言並最終實現的 PHP 的所有各種功能。在物件導向程式設計的上下文中使用。
此外,我們正在 WordPress 的背景下完成所有這些工作,以便在本系列結束時,我們可以看到如何在現實世界的範例中使用所有這些內容的實際應用。 p>
如果這是您第一次閱讀該系列中的文章,那麼我強烈建議您查看以前的文章,因為本系列中的每篇文章都建立在先前的文章的基礎上。
到目前為止,我們已經介紹了以下內容:
在本文中,我們將討論控制結構。
「控制結構」是一個奇特的術語,它描述了我們如何,咳咳,根據多種因素控製程式碼如何流經我們的程式。
例如,假設我們想要執行一組特定的指令,但您想要在設定了一個變數或設定了另一個變數的另一組指令時執行某些操作。
或假設您有一組數據,您想要循環讀取每個值、設定每個特定值,甚至建立特定值。
無論情況如何,執行此操作的方法都是透過使用控制結構。在本文的其餘部分中,我們將介紹兩種類型的控制結構:條件和循環。
雖然條件和迴圈是我們將要討論的控制結構類型,但每種類型都有子集。
例如,條件語句有:
if/then
語句switch/case
語句另一方面,循環還有一些其他變體:
for
foreach
do
while
#儘管這些對某些人來說可能是新的構造,但我們已經在先前的文章中介紹了基礎知識,因此我們擁有前進所需的一切。
在我看來,條件語句是最容易理解的語句,因為它們比許多其他類型的程式語句讀起來更像句子。例如,如果您字面意思是“如果此條件為真,則執行此操作;否則,請執行此操作。”
當然,如果您在決定採取行動之前還需要檢查一些其他條件,那麼事情會變得稍微複雜一些,但其要點仍然是相同的。
話雖如此,讓我們先來看看 PHP 提供的兩個條件變體之一。
if/then
語句如前面提到的,最基本的條件語句的形式是if/else
,你通常會看到這樣的寫法:
<?php if ( condition ) { // Take on action } else { // Take another action }
當然,這仍然不能真正解釋控制結構是如何運作的,不是嗎?我的意思是,當然,它提供了一些如何查看它的框架,但它還有更多不足之處。
也就是說,這個條件行是什麼?其次,控制結構可以採取哪些行動方案?
首先,條件指的是任何可以被計算為布林表達式的語句。合理?簡而言之,條件代表任何可以被評估為 true
或 false
的語句。
例如,假設我們有兩個值:
$is_active
#$total_count
#這些顯然是一些通用值,但假設如果$is_active
設定為true,那麼我們會將$total_count
加一;否則,我們會將$total_count
減一。
程式碼如下:
<?php $is_active = true; if ( $is_active ) { $total_count = $total_count + 1; } else { $total_count = $total_count - 1; }
在上面的範例中,$total_count
將加一,因為 $is_active
計算結果為 true。
或者,假設 $is_active
設定為 false
。
<?php $is_active = false; if ( $is_active ) { $total_count = $total_count + 1; } else { $total_count = $total_count - 1; }
在此範例中,$total_count
將會減一,因為 $is_active
的計算結果為 false。
現在,在我們查看下一個範例之前,重要的是要了解這些都是極其瑣碎的範例。這些範例的目的不是展示如何進行複雜的操作並將它們組合到條件構造中,而是展示如何使用條件建構。
當我們進入本系列中開始編寫插件的部分時,您將看到如何在實際應用程式中使用更複雜的表達式。
话虽如此,让我们再看一个 if/then 语句的示例。在此示例中,我们将查看 if/elseif/else
。首先,我们假设 $is_active
设置为 true,并且 $total_count
设置为 10。
<?php $is_active = false; $total_count = 10; if ( $is_active ) { $total_count = 1; } else if ( $total_count >= 10 ) { $total_count = $total_count + 1 } else { $total_count = $total_count - 1; }
上面的代码可以这样理解:
$is_active
设置为 true,则将 $total_count
设置为 1。 $is_active
不正确。$total_count
大于或等于 10,则将 $total_count
加 1。 $total_count
等于 10,因此我们将 $total_count
增加到 11。$total_count
不大于或等于 10,那么我们会将 $total_count
减 1。当上面示例中的代码块执行完毕时,$total_count
将等于 11。
有道理吗?
这就是我们称之为控制结构的原因:这些语句(或评估)使我们能够根据某些条件确定要运行哪些代码。
对于那些已经编程了一段时间的人来说,您应该熟悉使用 &&
和 ||
等运算符的更复杂的表达式。我们最终会讨论这个问题,但不是在本文中。
总而言之,这是我知道的一个主题,我们将讨论该主题,但不是今天。
对于那些更有编程经验的人来说,您可能会熟悉三元运算符。
我们不会在这个特定的系列文章中讨论这一点,因为它超出了我们想要涵盖的范围;但是,如果您喜欢冒险,并且正在寻找一种更简洁的方法来编写简单的 if/else
语句,请查看 PHP 手册中的三元运算符。
switch/case
语句话虽如此,在继续下一个主题之前,我们还需要了解另一种类型的条件条件。
这个特定的结构仍然属于条件语句;但是,我认为您会发现它的使用频率低于其 if/else
对应项。
如标题所示,这称为 switch/case
语句。尽管我个人认为该语言使其变得更加复杂,但控制流通过评估的方式与我们已经看到的没有太大不同。
就像我们对 if/else
语句所做的那样,我们首先看一下 switch/case
的结构,然后我们看一下几个简单的例子。
<?php switch ( condition ) { case 'value': // do action break; case 'another value': // do a different action break; default: // perform a default action break; }
关于这种特定类型的条件,首先要注意的是,评估发生在一个位置:在 switch
语句旁边的代码块顶部。 p>
这里,评估发生一次,然后每个后续 case
语句决定采取哪个操作。我们将讨论的每个语句中还包含一个 break
语句,并且在我们将要讨论的底部还有一个 default
代码块也在文章末尾进行讨论。
但在我们执行任何操作之前,让我们设置一个稍微更实际的示例,说明基本 switch/case
语句的样子。
假设我们有一个值 $first_name
,然后我们希望根据此人的名字采取特定的操作过程。在此示例中,我们将根据某人的名字设置其电子邮件地址。如果我们无法识别该人的名字,那么我们会将值设置为 null
。
当然,这是一个有点做作的例子,但它会证明这一点:
<?php $persons_name = 'Tom'; $email_address = ''; switch ( $persons_name ) { case 'Tom': $email_address = 'tom@acme-server.com'; break; case 'David': $email_address = 'david@acme-server.com'; break; default: $email_address = NULL; break; }
让我们看一下上面示例中的控制流程:
$persons_name
定义为“Tom”,并将 $email_address
初始化为空字符串。$persons_name
传递给 switch 语句进行评估。$persons_name
。$persons_name
的值,因此 $email_address
将设置为“tom@acme-server.com”李>
如果我们将“David”作为 $persons_name
传递,则 $email_address
将设置为“david@acme-server.com”。 p>
接下来,如果我们要传递除“Tom”或“David”之外的任何其他名称,则 $email_address
将设置为 NULL
.还需要注意的是 switch/case
区分大小写。这意味着如果您传递“tom”而不是“Tom”,那么它们将被视为不同的情况。
最后,请注意每个 case
以 break
语句结尾。这很重要,因为 break
指示代码跳出 switch/case
语句并继续处理接下来出现的任何代码。
了解这一点非常重要:如果您忘记了 break 语句,那么它将立即落入下一个 case 语句,这显然会产生不稳定的结果(例如设置错误的 $email_address
)。
您可以利用这一点来发挥自己的优势的一个示例如下:
<?php $persons_name = 'Tom'; $email_address = ''; switch ( $persons_name ) { case 'tom': case 'Tom': $email_address = 'tom@acme-server.com'; break; case 'David': $email_address = 'david@acme-server.com'; break; default: $email_address = NULL; break; }
在上面的示例中,我们为“Tom”定义了小写或首字母大写的情况,并演示了代码如何进入下一个 case
语句。
但是有一个更好的方法可以让它更加防弹:
<?php $persons_name = 'Tom'; $email_address = ''; switch ( strtolower( $persons_name ) ) { case 'tom': $email_address = 'tom@acme-server.com'; break; case 'david': $email_address = 'david@acme-server.com'; break; default: $email_address = NULL; break; }
请注意,这需要 PHP 函数 strtolower
来强制传入的 $persons_name
完全小写。这使我们能够进一步完善我们的案例陈述。
在本文中,我们研究了 PHP 中可用的两组控制结构中的第一组。不,这些并不是面向对象编程的明确组成部分,但在我们真正开始讨论该范例的更多基础方面之前,我们需要了解允许我们编写面向对象代码的所有细节。
为此,我们将在下一篇文章中通过查看循环来继续讨论控制结构。
之后,我们就可以将注意力转向函数了。对于那些熟悉过程式编程的人来说,函数并不是什么新鲜事。但是,如果您是面向对象编程的新手,那么有许多因素可以将它们与过程编程中的使用方式区分开来。
这就是下一组文章的路线图。与往常一样,欢迎提供反馈,我期待在下一篇文章中继续我们的讨论。
以上是WordPress中的物件導向程式設計:控制結構I的詳細內容。更多資訊請關注PHP中文網其他相關文章!