ホームページ > バックエンド開発 > PHPチュートリアル > WordPress におけるオブジェクト指向プログラミング: 制御構造 I

WordPress におけるオブジェクト指向プログラミング: 制御構造 I

WBOY
リリース: 2023-09-04 22:14:01
オリジナル
602 人が閲覧しました

WordPress におけるオブジェクト指向プログラミング: 制御構造 I

これまでこのシリーズをご覧になっている方は、特に初心者の観点からオブジェクト指向プログラミングについて考察していることをご存知でしょう。

これは、このパラダイムの使用を開始する方法を検討している人向けのトピックにアプローチしているだけでなく、言語を構成するさまざまな機能すべて、そして最終的には PHP の実装についても検討していることを意味します。オブジェクト指向プログラミングのコンテキストで使用されます。

さらに、これらすべてを WordPress のコンテキストで実行しているため、このシリーズの終わりまでに、これらすべてを実際の例で使用する方法を実際に応用できることがわかります。 p>

このシリーズの各記事は前の記事に基づいているため、このシリーズの記事を初めて読む場合は、以前の記事を確認することを強くお勧めします。

これまでに次のことを説明しました:

    ###導入### ###コース### ###タイプ###
  1. この記事では、制御構造について説明します。
  2. 制御構造とは何ですか?
  3. 「制御構造」とは、
まあ、

さまざまな要素に基づいてコードがプログラム内をどのように流れるかを制御する方法を説明する派手な用語です。

たとえば、特定の命令セットを実行したいが、ある変数が設定されたとき、または別の命令セットが別の変数を設定したときに何かを実行したいとします。

または、一連のデータがあり、各値をループしたり、それぞれの特定の値を設定したり、特定の値を作成したりするとします。

状況に関係なく、これを行うには制御構造を使用します。この記事の残りの部分では、条件文とループという 2 種類の制御構造を紹介します。 条件文とループはこれから説明する制御構造のタイプですが、各タイプのサブセットが存在します。

たとえば、条件文は次のとおりです:

if/then

ステートメント

    switch/case
  • ステートメント
  • 一方、ループには他にもいくつかのバリエーションがあります:
  • ######のために######

foreach

######する###### ######その間######

    これらは一部の人にとっては新しい構成かもしれませんが、基本については以前の記事で説明したので、先に進むために必要なものはすべて揃っています。
  • 条件文
  • 私の意見では、条件ステートメントは他の多くの種類のプログラミング ステートメントよりも文章に近いため、最も理解しやすいステートメントです。たとえば、文字通り「この条件が true の場合はこれを実行し、それ以外の場合はこれを実行します」を意味する場合、
  • もちろん、アクションの実行を決定する前に他の条件も確認する必要がある場合は、状況は やや複雑になりますが、要点は同じです。
  • そうは言っても、まず、PHP が提供する 2 つの条件付きバリアントの 1 つを見てみましょう。
  • if/then
  • ステートメント 前に述べたように、条件文の最も基本的な形式は
  • if/else
で、通常は次のように記述されています。 リーリー

もちろん、これだけでは制御構造がどのように機能するかを実際には説明できませんね。確かに、これはそれをどのように見るかについてのいくつかの枠組みを提供しますが、望まれることはまだたくさんあります。

つまり、この

条件

行は何ですか?第二に、制御構造はどのような行動を取ることができるでしょうか?

まず、Condition は、ブール式として評価できる任意のステートメントを指します。合理的?つまり、condition

は、

true

または false として評価できるステートメントを表します。

たとえば、2 つの値があるとします:

$is_active

$total_count

これらは明らかに一般的な値ですが、$is_active が true に設定されている場合は $total_count を 1 つ増やし、それ以外の場合は を増やすとします。 $total_count マイナス 1。

コードは以下のように表示されます:

リーリー
    上記の例では、
  1. $is_active が true と評価されるため、$total_count
  2. は 1 つ増加します。
  3. あるいは、$is_active
false

に設定されていると仮定します。 リーリー この例では、$is_active が false と評価されるため、$total_count は 1 つ減ります。

さて、次の例を見る前に、これらは非常に簡単な例であることを理解することが重要です。これらの例の目的は、複雑な操作を取得して条件構成に結合する方法を示すことではなく、むしろ

条件構成を使用する方法を示すことです。

このシリーズのプラグインの作成を開始する部分に到達すると、実際のアプリケーションでより複雑な式を使用する方法がわかります。

话虽如此,让我们再看一个 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 语句旁边的代码块顶部。

这里,评估发生一次,然后每个后续 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 语句进行评估。
  • 控制结构将根据 case 语句中指定的每个值评估 $persons_name
  • 由于“Tom”是 $persons_name 的值,因此 $email_address 将设置为“tom@acme-server.com”

如果我们将“David”作为 $persons_name 传递,则 $email_address 将设置为“david@acme-server.com”。

接下来,如果我们要传递除“Tom”或“David”之外的任何其他名称,则 $email_address 将设置为 NULL.还需要注意的是 switch/case 区分大小写。这意味着如果您传递“tom”而不是“Tom”,那么它们将被视为不同的情况。

最后,请注意每个 casebreak 语句结尾。这很重要,因为 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 语句。< /p>

但是有一个更好的方法可以让它更加防弹:

<?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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート