Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyelam Dalam Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan II

Menyelam Dalam Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan II

王林
王林asal
2023-09-02 12:13:06525semak imbas

Menyelam Dalam Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan II

Jika anda telah mengikuti keseluruhan siri kami, maka anda pasti tahu bahawa kami sedang melihat konsep pengaturcaraan berorientasikan objek dari perspektif pemula.

Secara khusus, kami melihat topik ini untuk mereka yang ingin membiasakan diri dengan paradigma dan cara menerapkan konsep ini dalam konteks WordPress namun, sebelum kita boleh mula bekerja dengan pengaturcaraan berorientasikan objek dan WordPress, kita mesti berbaring fungsi asas yang disediakan oleh Pangkalan PHP.

Akhirnya, kami berusaha mencipta contoh praktikal pengaturcaraan berorientasikan objek dengan mencipta pemalam WordPress. Tetapi sebelum itu, ada beberapa perkara yang perlu kita bincangkan.

Jika ini kali pertama anda membaca siri ini, maka saya syorkan anda menyemak artikel sebelumnya kerana setiap artikel dalam siri ini dibina berdasarkan artikel sebelumnya. Jika, sebaliknya, anda lebih biasa dengan pengaturcaraan berorientasikan objek, anda mungkin ingin menyemak semula siri ini apabila kami mula menggunakan idea ini dalam amalan.

Setakat ini kami telah membincangkan topik berikut.

  1. Pengenalan
  2. Kursus
  3. Taip
  4. Struktur kawalan: pernyataan bersyarat

Dalam artikel ini, kami akan mengakhiri perbincangan kami tentang struktur kawalan dengan melihat pelbagai jenis gelung yang disediakan oleh PHP.

Semakan Struktur Kawalan

Jika anda membaca artikel sebelumnya, maka anda akan ingat bahawa "struktur kawalan" merujuk kepada struktur yang disediakan oleh bahasa (dalam kes kami PHP) yang membolehkan kami mengubah suai kod sepanjang program berdasarkan nombor. syarat.

Dalam artikel sebelumnya, kami melihat bagaimana untuk melakukan ini dengan menggunakan pernyataan bersyarat, yang akan memaksa atur cara bertindak berdasarkan syarat (cth. jika pembolehubah ditetapkan, jika syarat itu benar, dan seterusnya).

Gelung

Tetapi itu bukan satu-satunya jenis kawalan yang kita ada. Sebagai tambahan kepada syarat, kami juga dapat mengulang (atau menggelung) ke atas set data supaya kami boleh mengambil tindakan pada setiap item dalam set data. Kami boleh menambah data, memadam data, memaparkan data, mengisih data dan banyak lagi.

Sebagai contoh, katakan kami mempunyai satu set data, mungkin 10 siaran, dan kami ingin mengulang dan mencetak tajuk dan tarikh setiap siaran. Gelung membolehkan kami melakukan ini.

Tidak kira apa yang anda mahu lakukan, PHP menyediakan empat jenis gelung yang membolehkan kami mengulangi set data. Dalam artikel ini, kita akan melihat setiap contoh dan beberapa nuansa setiap satu supaya anda boleh menggunakan satu lagi set struktur kawalan apabila anda mula menulis kod berorientasikan objek.

untuk gelung

for 循环

由于编写代码方式的性质,for 循环通常被认为是最复杂的循环。它的流程读起来有点不自然。

通常,我们习惯于逐行编写代码,以便将每条指令设置在一行上;然而,对于 for 循环,我们有一个稍微不同的方法。首先,我将分享一个基本示例,我们将介绍它的各个方面,然后我们将研究更详细的方法。

下面是一个基本示例,它将数到 10,并在屏幕上显示每个数字:

for ( $i = 0; $i < 10; $i++ ) {
    echo $i;
}

在循环的第一行(在 for 语句后的括号内),我们执行以下操作:

  • 初始化变量 $i 并将其设置为零
  • 设置一个条件,以便在 $i 时继续运行
  • 每次迭代后将 $i 增加值 1(使用后增量运算符)

在循环体中,我们只是使用 PHP 的 echo 函数来打印 $i 的当前值。当循环处理指令时,我们将在屏幕上看到 0 - 9 的打印结果(因为我们从零开始运行,而 $i 小于 10)。

不同的人有不同的阅读代码的技巧,所以我要推荐的策略可能不是最适合你的,但是当我阅读这些类型的循环时,我通常会这样阅读:

$i 从零开始,当 $i 小于 10 时,执行循环体,然后将 $i 加 1。

问题是 $i 可以从任何值开始,可以计数到任意数量,并且可以按任何值递增。

我们对 forDisebabkan sifat cara kod ditulis, gelung for sering dianggap sebagai gelung paling kompleks. Alirannya berbunyi sedikit tidak wajar.

🎜Biasanya, kami biasa menulis kod baris demi baris supaya setiap arahan ditetapkan pada satu baris namun, untuk gelung for, kami mempunyai pendekatan yang sedikit berbeza; Mula-mula, saya akan berkongsi contoh asas dan kita akan merangkumi pelbagai aspek mengenainya, dan kemudian kita akan melihat pendekatan yang lebih terperinci. 🎜 🎜Berikut ialah contoh asas yang akan dikira hingga 10 dan memaparkan setiap nombor pada skrin: 🎜
$names = array( 'Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot' );
foreach ( $names as $name ) {
    echo $name;
}
🎜Dalam baris pertama gelung (di dalam kurungan selepas pernyataan for), kami melakukan perkara berikut: 🎜
    🎜Mulakan pembolehubah $i dan tetapkannya kepada sifar🎜 🎜Tetapkan syarat untuk terus berjalan apabila $i 🎜 🎜Naikkan <code class="inline">$i dengan nilai 1 selepas setiap lelaran (menggunakan operator pasca kenaikan) 🎜
🎜Dalam badan gelung, kami hanya menggunakan fungsi echo PHP untuk mencetak nilai semasa $i. Semasa gelung memproses arahan, kita akan melihat 0 - 9 dicetak pada skrin (kerana kita berjalan dari sifar dan $i kurang daripada 10). 🎜 🎜Orang yang berbeza mempunyai teknik yang berbeza untuk membaca kod, jadi strategi yang akan saya cadangkan mungkin bukan yang terbaik untuk anda, tetapi apabila saya membaca jenis gelung ini, saya biasanya membaca seperti ini:
$i bermula dari sifar, dan apabila $i kurang daripada 10, badan gelung dilaksanakan dan $i ditambah dengan 1.
🎜Masalahnya ialah $i boleh bermula pada sebarang nilai, mengira kepada mana-mana nombor dan meningkat dengan sebarang nilai. 🎜 🎜Semakin banyak kerja yang kami lakukan dengan gelung for, semakin besar kemungkinan anda menemui sesuatu yang boleh mengoptimumkan prestasi. Walau bagaimanapun, buat masa ini, asas untuk gelung telah dibincangkan, dan teknik lanjutan sedikit di luar skop artikel ini. 🎜

foreach 循环

foreach 循环与 for 循环类似,因为它们迭代数据集,但它们是按顺序执行的。这意味着没有简单的方法可以迭代列表中的每一项(例如两个项目)(例如,可以使用 $i + 2 in for 循环)。

这种类型的循环可以说是最具可读性的。对于我们的示例,假设我们有一个数组,并且数据数组包含以下名称:Alpha、Bravo、Charlie、Delta、Echo 和 Foxtrot。数组的名称存储在名为 $names 的变量中。

在这种情况下,我们可以设置一个 foreach 循环来迭代名称并将每个名称显示在屏幕上,如下所示:

$names = array( 'Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot' );
foreach ( $names as $name ) {
    echo $name;
}

设置非常简单,不是吗?

正如我们在上一节中分享了一种读取初始 for 循环的方法一样,您可以通过以下方式读取 foreach 循环:

对于名称集合中的每个名称,将其显示在屏幕上。

或者,也许更一般地说:

对于集合中的每个元素,将其显示在屏幕上。

还有什么吗?

foreach 循环还有另一个方面,我们可能会在本系列后面更详细地介绍,但主要思想是,如果您熟悉关联数组,即数组使用键进行索引并且具有关联值,您可以设置 foreach 循环来检索循环每次迭代的每个键和值。

例如,假设我们有以下关联数组:

$heroes = array( 'alien' => 'Superman', 'human' => 'Batman' );

当使用这样的关联数组时,您还可以设置一个 foreach 循环,如下所示:

foreach ( $heroes as $type => $name ) {
    echo $name . ' is a ' . $type;
}

这将导致输出读取诸如“超人是外星人”之类的内容,因为“超人”是值,“外星人”是他的类型(或他的键)。

此循环的更通用形式如下:

foreach ( $collection as $key => value ) {
    // Work goes here
}

没什么特别复杂的。

while 循环

介绍了 for 循环的变体后,是时候将我们的注意力转向 while 循环了,其中有两种变体(尽管它们的名称不同:while 循环和 do 循环),但它们只有很小的区别。

但是在我们了解它们有何不同之前,我们先来看看 while 循环,它的基本格式、如何使用它以及它与之前的 for 循环。

首先,while循环的基本格式如下:

while ( condition ) {
    // do work
}

请注意,此循环与之前的循环不同,它接受条件作为初始语句的一部分(这就是我们在上一篇文章中介绍条件的原因)。

循环的工作原理是首先检查条件是否为真,执行循环体中的代码块,然后再次检查条件。这意味着 while 循环可以执行任何工作单元,只要指定的条件计算结果为 true。

所以,当然,您可以迭代数字列表,运行数据集合,但您也可以在布尔值仍然为 true 的情况下执行某些操作。一旦标志达到 false,则 while 循环将终止。

让我们看一个从数组中弹出元素的示例。假设初始数组有 100 个元素,我们将一直这样做,直到数组剩下 50 个元素:

while ( 50 !== count ( $elements ) ) {
    array_pop( $elements );
}

这里,条件将继续评估为 true,直到 $elements 数组中的项目数减少到 50 项。

正如我们对之前的循环所做的那样,这是读取 while 循环的一种方法:

当这个条件成立时,执行以下代码。

当然,代码看起来就是这样,不是吗?

do 循环

最后,do 循环几乎完全类似于 while 循环,只不过在检查条件之前至少会迭代一次。

在看示例之前,先介绍一下 do 循环的基本结构:

do {
    // do work
} while ( condition );

比较清楚,对吧?

因此,让我们设置一个非常基本的示例,其中创建一个数组并仅用偶数填充它。为此,我们需要:

  • 保存数字的数组
  • 一个变量,用于保存我们迭代前 100 个偶数的次数

话虽如此,我们可以将代码设置为如下所示:

$i = 1;
$even_numbers = array();

do {

    if ( 0 === ( $i % 2 ) ) {
        $even_numbers[] = $i;
    }
    
    $i++;

} while ( $i <= 100 );

最后,与其余循环一样,您可以通过以下方式读取这些类型的循环:

Laksanakan blok kerja berikut dan kemudian semak sama ada syarat berikut adalah benar. Jika ya, teruskan kerja.

Ada lagi?

Apabila gelung do, jika anda menggunakan koleksi, anda perlu memastikan bahawa koleksi itu tidak kosong sebelum memprosesnya, kerana ia akan berada dalam Kod dalam blok gelung dilaksanakan sebelum menyemak sama ada keadaan itu benar. Ini boleh menyebabkan ralat jika anda cuba memproses set data kosong. do 循环时,如果您正在使用集合,则需要在处理集合之前确保该集合为空,因为它将在检查条件是否为真之前执行循环块中的代码。如果您尝试处理空数据集,这可能会导致错误。

当然,如果您打算这样做,那么其他循环之一可以更好地针对这种操作进行优化。

只有当您有一组数据或者您要执行一个您知道在检查之前需要至少执行一次的过程时,才使用 do

Sudah tentu, jika anda merancang untuk melakukan ini, salah satu gelung lain mungkin lebih dioptimumkan untuk operasi seperti ini.

Gunakan arahan gelung do hanya apabila anda mempunyai set data atau anda sedang melakukan prosedur yang anda tahu perlu dilakukan sekurang-kurangnya sekali sebelum ini menyemak Syarat bilangan pelaksanaan yang akan dilaksanakan.

Apa seterusnya?

Dengan ini, kami telah membentangkan semua yang anda perlukan untuk mula membincangkan fungsi, sifat, skop dan aspek asas lain pengaturcaraan berorientasikan objek. 🎜 🎜Bagi anda yang berpendapat siri ini merangkumi lebih kurang beberapa asas pengaturcaraan PHP, kami akan mula beralih ke wilayah yang lebih maju sedikit dalam artikel seterusnya. 🎜

Atas ialah kandungan terperinci Menyelam Dalam Pengaturcaraan Berorientasikan Objek dalam WordPress: Struktur Kawalan II. 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