Dalam artikel pertama siri ini, kami mentakrifkan bau kod dan melihat beberapa contoh untuk memahami maksudnya dan cara kami boleh memfaktorkannya semula untuk meningkatkan kualiti kod. Ingat:
[A] Bau kod, juga dikenali sebagai bau busuk dalam kod pengaturcaraan komputer, adalah sebarang gejala dalam kod sumber program yang mungkin menunjukkan masalah yang lebih mendalam.
Akhirnya, kami sedang berusaha untuk melaksanakan peraturan menghidu kod khusus WordPress, tetapi sebelum itu, penting untuk membiasakan diri dengan PHP CodeSniffer.
Dalam artikel ini, kita akan mempelajari apa itu PHP CodeSniffer, cara memasangnya, cara menjalankannya terhadap skrip sampel dan cara memfaktorkan semula skrip tersebut. Kemudian kita akan melihat cara beralih kepada kod khusus WordPress.
Jika anda mempunyai persekitaran pembangunan tempatan, itu bagus; jika tidak, tidak mengapa. Saya akan menyediakan beberapa pautan untuk membantu anda bangun dan berjalan dengan cepat.
Dengan itu, mari kita mulakan.
Sebelum anda bermula, adalah penting untuk mempunyai beberapa jenis persekitaran pembangunan tempatan, walaupun ia hanya menyertakan salinan penterjemah PHP.
Sila ambil perhatian bahawa jika anda menjalankan varian Linux atau OS X, anda mungkin sudah memasang PHP. Jika anda melakukan ini, anda tidak perlu risau tentang perkara lain dalam bahagian ini. Untuk menentukan sama ada PHP dipasang, jalankan arahan berikut pada baris arahan:
$ php -v
Anda sepatutnya melihat sesuatu yang serupa dengan yang berikut (walaupun output anda mungkin berbeza-beza bergantung pada versi PHP yang anda pilih untuk jalankan):
PHP 5.6.10 (cli) (built: Jul 6 2015 14:28:54) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
Jika anda lebih maju dan mempunyai beberapa salinan projek yang dipasang, anda boleh menjalankan:
$ which php
Anda sepatutnya melihat sesuatu seperti ini:
/Applications/MAMP/bin/php/php5.6.10/bin/php
Walaupun output anda akan berbeza-beza bergantung pada tempat salinan PHP anda dipasang.
Walaupun siri ini ditujukan terutamanya kepada pemula, mungkin ada antara anda yang bersedia memuat turun salinan PHP dan memasangnya pada sistem anda. Jika ini anda, ambil salinan PHP dari halaman utama projek, pasangkannya dan kembali ke tutorial ini.
Sebaliknya, jika ini baru kepada anda, maka anda boleh memilih untuk menggunakan salah satu pemasang untuk sistem pengendalian anda daripada halaman utama PHP yang dipautkan di atas atau salah satu utiliti yang disediakan di bawah.
Semua pakej ini mempunyai pemasang sendiri dan akan memasang PHP, MySQL dan Apache. Seperti yang dinyatakan sebelum ini, kebimbangan utama kami ialah menyediakan salinan PHP pada sistem kami.
Setelah dipasang, cuba jalankan arahan yang disebut dalam bahagian pertama bahagian ini (atau yang setara untuk sistem anda) dan anda akan melihat output yang serupa.
Jika anda tidak berbuat demikian, maka anda mungkin perlu menambahkan laluan ke PHP pada pembolehubah persekitaran anda. Ini adalah di luar skop tutorial ini, jadi sila rujuk dokumentasi untuk versi projek yang telah anda pasang.
Sekarang PHP dipasang, kita boleh mula menangkap dan membersihkan bau kod.
Anda boleh menemui perisian PHP CodeSniffer rasmi di GitHub.
Daripada dokumentasi projek:
PHP_CodeSniffer ialah satu set dua skrip PHP; skripphpcs
脚本对 PHP、JavaScript 和 CSS 文件进行标记,以检测是否违反已定义的编码标准,第二个phpcbf
utama digunakan untuk membetulkan pelanggaran piawaian pengekodan secara automatik. PHP_CodeSniffer ialah alat pembangunan penting yang memastikan kod anda kekal bersih dan konsisten.
Jika anda tidak pernah melihat perkara seperti ini sebelum ini, bunyinya sangat bagus, bukan? Maksud saya, ia adalah alat yang direka untuk membantu memastikan kod anda mempunyai tahap kualiti tertentu!
Walaupun projek itu menyebut bahasa seperti CSS dan JavaScript, kami menumpukan pada PHP dalam siri ini. Tetapi itu tidak bermakna tidak penting untuk menyemak kualiti fail khusus bahasa ini dalam projek anda.
Walaupun kedengarannya bagus, ia masih menimbulkan beberapa soalan: Bagaimanakah kami memasang perisian dan bagaimanakah kami mula menyemak kod kami?
Sekarang mari jawab dua soalan ini.
Jika anda mencari di Google tentang cara memasang PHP CodeSniffer, anda mungkin akan mendapat pelbagai hasil, kebanyakannya akan termasuk menggunakan sesuatu yang dipanggil Pear.
Pear pernah menjadi sistem pengedaran pakej de facto untuk perpustakaan PHP, dan walaupun banyak pakej masih tersedia melalui perisian, ia juga telah dihentikan daripada pakej popular lain seperti PHPUnit.
Atas sebab ini, saya sering mengesyorkan menggunakan kaedah pemasangan lain yang ada. Ini termasuk menggunakan alat seperti Composer, yang boleh dikatakan perisian pengurusan pergantungan yang paling popular untuk PHP.
如果您以前从未使用过 Composer,请不要担心。我将提供您所需的所有步骤,以便通过 Composer 并以最少的工作在您的计算机上启动并运行 PHP CodeSniffer。如果您有兴趣了解更多信息,我们有很多有关如何使用 Composer 的教程,请随时查看。
在安装 PHP CodeSniffer 之前,我们需要实际安装 Composer。幸运的是,一旦您在本地计算机上启动并运行了 PHP,就可以很容易地做到这一点。
要安装 Composer,您可以下载此文件,然后从下载 Composer 安装程序的位置在命令行上执行以下命令:
$ php composer-setup.php --install-dir=bin --filename=composer
Composer 安装说明中的注释:
您可以使用--install-dir
选项将 Composer 安装到特定目录,并使用--filename
选项(重新)命名它。
有关更多信息,请随时参阅下载说明或在 GitHub 上查看整个项目。
安装完成后,您现在可以使用 Composer 将第三方依赖项(例如 PHP CodeSniffer)安装到您的项目中。不过,请记下您安装 Composer 副本的位置。运行它时您需要引用它,因为我们将从命令行运行它。
无论如何,让我们继续创建一个目录,我们将在其中运行 PHP 脚本。虽然此目录中还没有任何内容,但我们需要创建一个名为 composer.json
的文件。
我将调用我的目录 tutsplus-demo
,并将我的 Composer 文件包含在该目录中以开始使用。
创建文件后,将以下代码放入 JSON 文件中:
{ "require": { "squizlabs/php_codesniffer": "2.*" } }
简而言之,这告诉 Composer 在您执行正确的命令时安装 PHP CodeSniffer。请注意,require
指令执行以下操作:
列出该包所需的包。除非满足这些要求,否则不会安装该软件包。
您可以在文档中阅读有关 Composer 架构的更多信息。
一旦安装了 Composer,并且您的 composer.json
文件与上面的代码类似,就可以实际安装 PHP CodeSniffer 了。从命令行发出以下命令:
$ composer update
请注意,这是基于 Composer 在您的系统上公开可用的想法。如果没有,您可以通过键入已安装文件的完整路径来执行它,也可以将其添加到环境变量中,然后重新启动终端会话以重新加载变量。
Composer 完成工作后,您应该会看到如下内容:
您的 tutsplus-code
目录现在应如下所示:
特别注意,您有一个供应商目录。这意味着 Composer 正确安装了 PHP CodeSniffer。此时,我们已准备好评估 PHP 代码。
首先,我们来看一个示例脚本。我们要查看的内容可以在 Stack Overflow 上的这个答案中找到。
在 tutsplus-demo
目录中创建一个文件,并将其命名为 sample.php
。然后,确保该文件包含以下内容:
<?php $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } ?>
保存您的工作。接下来,我们可以从命令行运行 PHP CodeSniffer,并让它使用标准规则集评估上面脚本中的代码。
从您的终端输入以下命令:
$ vendor/bin/phpcs sample.php
这应该生成包含以下内容的输出:
Skyhopper5:tutsplus-demo tommcfarlin$ vendor/bin/phpcs sample.php FILE: /Users/tommcfarlin/Desktop/tutsplus-demo/sample.php ---------------------------------------------------------------------- FOUND 4 ERRORS AFFECTING 4 LINES ---------------------------------------------------------------------- 2 | ERROR | [ ] Missing file doc comment 5 | ERROR | [x] No space found after comma in function call 7 | ERROR | [ ] Expected "if (...) {\n"; found "if(...) {\n" 9 | ERROR | [ ] Expected "if (...) {\n"; found "if(...) {\n" ---------------------------------------------------------------------- PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------- Time: 46ms; Memory: 3.5Mb Skyhopper5:tutsplus-demo tommcfarlin$
请注意,它发现了四个错误。第一列告诉您错误发生在哪一行,第二列指出这是一个错误(而不是警告),然后其余的告诉您它期望看到的内容与实际看到的内容。
所以让我们根据这些错误清理文件。一般来说,我们需要做到以下几点:
if
语句后添加空格。最终结果如下所示:
<?php /** * Determines if the file being uploaded is a legitimate image or not. * If so, allows the file to be uploaded. Otherwise, prevents the upload * from occurring. * * PHP Version 5 * * @category Demo * @package TutsPlus_Demo * @author Tom McFarlin <tom@tommcfarlin.com> * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @link http://is.gd/dq0DhO * @since 1.0.0 */ $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION); // Check if image file is a actual image or fake image if (isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if ($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } ?>
接下来,再次运行脚本,您应该不会得到任何输出。也就是说,您应该看到标准命令提示符。有时这意味着某些东西被破坏了,但在这种情况下,这意味着一切都按预期运行
不错吧?
现在想象一下这对于您每天使用的更大的代码库和脚本会有什么作用。
Walaupun penting untuk menilai kod kami, mengelakkan bau kod dan berusaha untuk mendapatkan kualiti tertinggi yang mungkin, alatan seperti PHP CodeSniffer tidak dimaksudkan untuk digunakan sebagai tongkat. Ini bermakna kita tidak mempunyai alasan untuk menulis kod buruk kerana alat lain akan menangkapnya.
Kerana ia tidak selalu berfungsi seperti itu.
Sebaliknya, ia bermakna hantaran kedua. Maksudnya, tujuannya adalah untuk menangkap perkara yang mungkin kita terlepas buat kali pertama, kedua atau kesembilan kita menulis kod. Perkara yang menarik tentang program khusus ini ialah anda boleh memuatkan peraturan yang berbeza ke dalam PHP CodeSniffer bergantung pada persekitaran, rangka kerja atau perpustakaan yang anda gunakan.
Itulah yang akan kami lakukan dengan WordPress dalam artikel seterusnya.
Setakat bahan pengenalan, kami membincangkan sedikit sebanyak dalam tutorial ini. Oleh itu, mari kita pertimbangkan untuk menyediakan persekitaran pembangunan asas dengan PHP pada mesin tempatan kita.
Seterusnya, kami mempelajari tentang Komposer dan cara memasangnya pada sistem kami. Kami telah menulis fail Komposer pertama kami untuk mendapatkan semula kebergantungan, PHP CodeSniffer, dan kami juga telah menilai dan membetulkan keputusan yang diberikan oleh perisian kepada kami.
Jika anda terutamanya pembangun PHP, maka saya harap dua artikel pertama dalam siri ini berguna, tetapi jika anda seorang pembangun WordPress, kami mempunyai banyak lagi untuk dibahas.
Dalam artikel akhir siri ini, kami akan mengalihkan perhatian kami kepada WordPress. Oleh kerana ia mempunyai set piawaian pengekodannya sendiri, kami akan melihat cara memuatkan peraturan tersebut ke dalam PHP CodeSniffer dan kemudian menilai pemalam, kod tema, dll. untuk melihat cara kami boleh menggunakannya dalam seharian kami - bekerja pada projek WordPress kami hari ini.
Sebelum kita beralih ke artikel seterusnya, lihat kod di atas dan pastikan anda telah memasang PHP dan PHP CodeSniffer dan biasa dengan cara ia berfungsi, kerana kami akan menggabungkan semuanya bersama-sama
Akhir sekali, anda boleh menyemak semua kursus dan tutorial saya di halaman profil saya dan anda boleh mengikuti saya di blog dan/atau Twitter saya (@tommcfarlin) di mana saya membincangkan pelbagai amalan pembangunan perisian, terutamanya Ia dalam persekitaran WordPress.
Sila tinggalkan sebarang soalan atau komen dalam suapan di bawah dan saya akan melakukan yang terbaik untuk membalas setiap satu.
Atas ialah kandungan terperinci Menggunakan PHP CodeSniffer dengan WordPress: Memasang dan menggunakan PHP CodeSniffer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!