Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan I

Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan I

WBOY
WBOYasal
2023-09-04 22:13:10511semak imbas

Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan I

Bagi anda yang mengikuti siri ini setakat ini, anda tahu bahawa kami melihat pengaturcaraan berorientasikan objek secara khusus dari perspektif pemula.

Ini bermakna kami bukan sahaja menghampiri topik ini untuk mereka yang melihat bagaimana untuk mula menggunakan paradigma ini, tetapi kami melihat semua pelbagai ciri yang membentuk bahasa dan akhirnya pelaksanaan PHP. Digunakan dalam konteks pengaturcaraan berorientasikan objek.

Selain itu, kami melakukan semua ini dalam konteks WordPress supaya pada penghujung siri ini, kami dapat melihat aplikasi praktikal tentang cara menggunakan semua ini dalam contoh dunia sebenar. p>

Jika ini kali pertama anda membaca artikel dalam siri ini, maka saya amat mengesyorkan anda menyemak artikel sebelumnya kerana setiap artikel dalam siri ini dibina berdasarkan artikel sebelumnya.

Setakat ini kami telah membincangkan perkara berikut:

  1. Pengenalan
  2. Kursus
  3. Taip

Dalam artikel ini, kita akan membincangkan struktur kawalan.

Apakah itu struktur kawalan?

"Struktur kawalan" ialah istilah mewah yang menerangkan cara kami, ahem, mengawal cara kod mengalir melalui program kami berdasarkan pelbagai faktor.

Sebagai contoh, katakan kita mahu melaksanakan set arahan tertentu, tetapi anda mahu melakukan sesuatu apabila satu pembolehubah ditetapkan atau set arahan lain menetapkan pembolehubah lain.

Atau katakan anda mempunyai satu set data dan anda ingin mengulang setiap nilai, tetapkan setiap nilai tertentu atau bahkan mencipta nilai tertentu.

Apa pun keadaannya, cara untuk melakukan ini adalah melalui penggunaan struktur kawalan. Dalam baki artikel ini, kami akan memperkenalkan dua jenis struktur kawalan: bersyarat dan gelung.

Walaupun syarat dan gelung adalah jenis struktur kawalan yang akan kita bincangkan, terdapat subset bagi setiap jenis.

Sebagai contoh, pernyataan bersyarat ialah:

  • if/then pernyataanif/then 语句
  • switch/case 语句

另一方面,循环还有一些其他变体:

  • for
  • foreach
  • do
  • while

尽管这些对于某些人来说可能是新的构造,但我们已经在之前的文章中介绍了基础知识,因此我们拥有前进所需的一切。

条件语句

在我看来,条件语句是最容易理解的语句,因为它们比许多其他类型的编程语句读起来更像句子。例如,如果您字面意思是“如果此条件为真,则执行此操作;否则,执行此操作。”

当然,如果您在决定采取行动之前还需要检查一些其他条件,那么事情会变得稍微复杂一些,但其要点仍然是相同的。

话虽如此,让我们首先看一下 PHP 提供的两种条件变体之一。

if/then 语句

正如前面提到的,最基本的条件语句的形式是if/else,你通常会看到这样的写法:

<?php

if ( condition ) { 
    // Take on action
} else {
    // Take another action
}

当然,这仍然不能真正解释控制结构是如何工作的,不是吗?我的意思是,当然,它提供了一些如何查看它的框架,但它还有更多不足之处。

也就是说,这个条件行是什么?其次,控制结构可以采取哪些行动方案?

首先,条件指的是任何可以被计算为布尔表达式的语句。合理?简而言之,条件代表任何可以被评估为 truefalse 的语句。

例如,假设我们有两个值:

  1. $is_active
  2. $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

switch/case statement

Sebaliknya, terdapat beberapa variasi gelung yang lain:

🎜untuk🎜 🎜foreach🎜 🎜do🎜 🎜sementara🎜 🎜Walaupun ini mungkin binaan baharu bagi sesetengah orang, kami telah membincangkan perkara asas dalam artikel sebelumnya supaya kami mempunyai segala yang kami perlukan untuk bergerak ke hadapan. 🎜 🎜Kenyataan bersyarat🎜 🎜Pada pendapat saya, penyataan bersyarat ialah penyataan yang paling mudah difahami kerana ia membaca lebih seperti ayat daripada banyak jenis penyataan pengaturcaraan yang lain. Contohnya, jika anda benar-benar maksudkan "Jika syarat ini benar, lakukan ini; jika tidak, lakukan ini 🎜 🎜Sudah tentu, jika anda juga perlu menyemak beberapa syarat lain sebelum anda memutuskan untuk mengambil tindakan, perkara menjadi 🎜sedikit 🎜rumit, tetapi intipatinya masih sama. 🎜Dengan itu, mari kita lihat dahulu salah satu daripada dua varian bersyarat yang disediakan oleh PHP. 🎜

if/then pernyataan

🎜Seperti yang dinyatakan sebelum ini, bentuk pernyataan bersyarat yang paling asas ialah if/else, anda biasanya akan melihatnya ditulis seperti ini: 🎜
<?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;
}
🎜Sudah tentu, ini masih tidak benar-benar menerangkan cara struktur kawalan berfungsi, bukan? Maksud saya, pasti, ia menyediakan beberapa rangka kerja untuk melihatnya, tetapi ia meninggalkan banyak lagi yang perlu diingini. 🎜 🎜Dalam erti kata lain, apakah talian 🎜condition🎜 ini? Kedua, apakah tindakan yang boleh diambil oleh struktur kawalan? 🎜 🎜Pertama sekali, 🎜syarat🎜 merujuk kepada sebarang pernyataan yang boleh dinilai sebagai ungkapan Boolean. munasabah? Ringkasnya, 🎜syarat🎜 mewakili sebarang pernyataan yang boleh menilai kepada true atau false. 🎜 🎜Sebagai contoh, katakan kita mempunyai dua nilai: 🎜 🎜 🎜$is_active🎜 🎜$total_count🎜 🎜 🎜Ini jelas beberapa nilai biasa, tetapi andaikan jika $is_active ditetapkan kepada benar, maka kami akan meningkatkan $total_count sebanyak satu ; Jika tidak, kami mengurangkan $total_count dengan satu. 🎜 🎜Kod adalah seperti berikut: 🎜
<?php
switch ( condition ) {

    case 'value':
        // do action
        break;
    
    case 'another value':
        // do a different action
        break;
        
    default:
        // perform a default action
        break;

}
🎜Dalam contoh di atas, $total_count akan ditambah satu kerana $is_active menilai kepada benar. 🎜 🎜Sebagai alternatif, anggap bahawa $is_active ditetapkan kepada false. 🎜
<?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;

}
🎜Dalam contoh ini, $total_count akan dikurangkan satu kerana $is_active menilai kepada palsu. 🎜 🎜Sekarang, sebelum kita melihat contoh seterusnya, adalah penting untuk memahami bahawa ini adalah contoh yang sangat remeh. Tujuan contoh ini bukan untuk menunjukkan cara mengambil operasi yang kompleks dan menggabungkannya menjadi binaan bersyarat, tetapi untuk menunjukkan cara 🎜menggunakan 🎜 binaan bersyarat. 🎜 🎜Apabila kita sampai ke bahagian siri ini di mana kita mula menulis pemalam, anda akan melihat cara menggunakan ungkapan yang lebih kompleks dalam aplikasi dunia sebenar. 🎜

话虽如此,让我们再看一个 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 语句进行评估。
  • 控制结构将根据 case 语句中指定的每个值评估 $persons_name
  • 由于“Tom”是 $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”,那么它们将被视为不同的情况。

最后,请注意每个 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 语句。

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

<?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 中可用的两组控制结构中的第一组。不,这些并不是面向对象编程的明确组成部分,但在我们真正开始讨论该范例的更多基础方面之前,我们需要了解允许我们编写面向对象代码的所有细节。

为此,我们将在下一篇文章中通过查看循环来继续讨论控制结构。

之后,我们就可以将注意力转向函数了。对于那些熟悉过程式编程的人来说,函数并不是什么新鲜事。但是,如果您是面向对象编程的新手,那么有许多因素可以将它们与过程编程中的使用方式区分开来。

这就是下一组文章的路线图。与往常一样,欢迎提供反馈,我期待在下一篇文章中继续我们的讨论。

Atas ialah kandungan terperinci Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan I. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn