Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Rangka Kerja API PHP Tulisan Tangan (1) Spesifikasi PSR

Rangka Kerja API PHP Tulisan Tangan (1) Spesifikasi PSR

藏色散人
藏色散人ke hadapan
2023-02-10 10:31:113468semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang PHP terutamanya mengenai piawaian pengekodan dengan anda juga disyorkan agar anda cuba mengikuti piawaian semasa pembangunan membantu anda.

Niat asal penciptaan

  • Pernahkah anda bosan menggunakan CURD?
  • Adakah pelbagai rangka kerja agak menggembirakan?
  • Pernahkah anda cuba mereka bentuk rangka kerja sendiri?
  • Saya telah mempelajari sintaks PHP, tetapi saya tidak mempunyai projek untuk mempraktikkannya, jadi saya boleh meletakkan asas yang kukuh

Saya harap ia dapat membantu anda membina sendiri dengan cepat rangka kerja dan membawa beberapa faedah kepada kerja atau kajian anda. Datang untuk mendapatkan bantuan dan inspirasi.

Apa yang anda boleh pelajari

  • Spesifikasi PSR

  • Penggunaan komposer

  • Bina dengan cepat rangka kerja antara muka API

  • Redis aplikasi pelbagai jenis data

  • Analisis aplikasi cache


Sebelum membangunkan rangka kerja, izinkan saya memperkenalkan spesifikasi diikuti dengan pembangunan rangka kerja.

Kebanyakan bahasa pengaturcaraan mempunyai set standard pengekodan mereka sendiri Sebagai "bahasa terbaik di dunia", PHP pastinya mempunyai piawaian pengekodannya sendiri. Spesifikasi ini ialah Pengesyoran Standard PHP (pendek kata PSR).

Sudah tentu, dari kerja saya sendiri, saya mendapati bahawa ramai pengaturcara PHP, terutamanya pengaturcara junior, tidak tahu bahawa PHP mempunyai spesifikasi sedemikian, saya rasa ini tidak saintifik.

Apakah itu PSR?

Sebelum memperkenalkan PSR, kami perlu memperkenalkan organisasi yang merumuskan spesifikasi ini -----PHP-FIG, nama penuhnya ialah PHP Framework Interoperability.

Ahli organisasi merumuskan spesifikasi dan melaksanakannya dalam projek mereka sendiri Walaupun ia bukan organisasi rasmi, ia juga mewakili kebanyakan projek komuniti PHP, seperti CakePHP, Composer, Drupal, PEAR, Slim, rangka kerja Yii, Zend. Rangka kerja tunggu. Dan semakin banyak projek menyertai dan mengikuti piawaian ini.

Tujuan projek PSR adalah untuk merumuskan piawaian kerjasama dengan tahap sekatan paling rendah melalui perbincangan antara pengarang rangka kerja atau wakil rangka kerja Setiap rangka kerja mengikut piawaian pengekodan bersatu untuk membolehkan jurutera bekerja bersama dengan lebih baik.

Sehingga kini, 20 item telah disenaraikan di laman web rasmi Tidak termasuk dalam penggubalan dan dibuang, terdapat 13 item berikut.

Rangka Kerja API PHP Tulisan Tangan (1) Spesifikasi PSR


Mari kita lihat spesifikasi ini:

Spesifikasi Pengekodan Asas PSR-1

  • Fail kod PHP mesti bermula dengan tag
  • Fail kod PHP mesti dikodkan dalam UTF-8 tanpa BOM
  • Kod PHP hanya perlu menentukan Untuk pengisytiharan kelas, fungsi, pemalar, dsb., atau operasi lain yang akan menghasilkan kesan sampingan (seperti menjana output fail dan mengubah suai fail konfigurasi .ini, dsb.), anda hanya boleh memilih salah satu daripada dua
  • Ruang nama dan kelas mesti mematuhi PSR Spesifikasi pemuatan automatik PSR-4
  • Penamaan kelas mesti mengikut konvensyen penamaan kes unta gaya StudlyCaps bermula dengan huruf besar
  • Semua huruf pemalar dalam kelas mesti menggunakan huruf besar dan perkataan dipisahkan dengan garis bawah
  • Nama kaedah mesti mematuhi konvensyen penamaan camelCase gaya camelCase

Spesifikasi gaya kod PSR-12

Spesifikasi PSR-12 sangat terperinci Mengandungi perihalan pengisytiharan, ruang nama, kelas dan warisan serta struktur kawalan.

Mari kita lihat demo dahulu:

<?php

declare(strict_types=1);

namespace Vendor\Package;

use Vendor\Package\{ClassA as A, ClassB, ClassC as C};
use Vendor\Package\SomeNamespace\ClassD as D;

use function Vendor\Package\{functionA, functionB, functionC};

use const Vendor\Package\{ConstantA, ConstantB, ConstantC};

class Foo extends Bar implements FooInterface
{
    public function sampleFunction(int $a, int $b = null): array
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }

    final public static function bar()
    {
        // method body
    }
}
  • Kod mesti mengikut spesifikasi pengekodan dalam [PSR-1]
  • Semua fail PHP mesti gunakan Unix LF (linefeed) sebagai penamat baris; 🎜 >Bilangan aksara dalam setiap baris hendaklah disimpan dengan lembut dalam 80. Secara teori, ia mestilah tidak lebih daripada 120, tetapi mesti tiada ruang tambahan selepas baris bukan kosong;
  • Garis kosong memudahkan anda membaca kod dan membantu memecahkan kod kepada beberapa bahagian.
  • Setiap baris tidak boleh mengandungi lebih daripada satu pernyataan
  • Kod mesti diinden dengan 4 ruang dan kunci tab tidak boleh digunakan
  • Semua kata kunci PHP mestilah semuanya huruf kecil
  • Spesifikasi asas struktur kawalan adalah seperti berikut:
  • Terdapat banyak spesifikasi gaya pengekodan, jadi saya tidak akan menerangkannya satu per satu di sini boleh membacanya sendiri
  • Pemuatan Auto PSR-4
控制结构关键词后必须有一个空格。
左括号 ( 后一定不能有空格。
右括号 ) 前也一定不能有空格。
右括号 ) 与开始花括号 { 间一定有一个空格。
结构体主体一定要有一次缩进。
结束花括号 } 一定在结构体主体后单独成行。复制代码
Mengenai spesifikasi yang berkaitan untuk memuatkan kelas yang sepadan secara automatik daripada laluan fail, spesifikasi ini boleh dikendalikan dan boleh digunakan sebagai tambahan kepada mana-mana spesifikasi pemuatan automatik, termasuk PSR-0, selain itu, PSR ini juga termasuk spesifikasi laluan penyimpanan fail yang sepadan dengan kelas yang dimuatkan secara automatik.

"Kelas" di sini merujuk kepada semua kelas, antara muka, ciri blok kod boleh guna semula dan struktur lain yang serupa.

Nama kelas yang lengkap mesti mempunyai struktur berikut:
  • Nama kelas yang lengkap
  • mesti

    menjadi A Ruang nama peringkat atas, dipanggil "ruang nama vendor";

     \(\)*\
    • Nama kelas yang lengkap

      boleh mempunyai satu atau lebih ruang kecil

    • Nama kelas lengkap

      mestimempunyai nama kelas akhir; >

    • Nama kelas lengkap boleh terdiri daripada mana-mana huruf besar dan huruf kecil; Sensitif huruf besar.

    • Apabila memuatkan fail yang sepadan berdasarkan nama kelas yang lengkap...

  • Dalam nama kelas yang lengkap, keluarkan Pembatas ruang nama pertama, satu atau lebih ruang nama dan ruang kecil berturut-turut sebelumnya, sebagai "awalan ruang nama", mesti sepadan dengan sekurang-kurangnya satu "direktori asas fail"
    • The ruang kecil
    • sejurus selepas awalan ruang nama mesti

      sepadan dengan "direktori asas fail" yang sepadan dan pemisah ruang nama di dalamnya akan digunakan sebagai pemisah direktori. Nama kelas

      di hujung
    • mesti mempunyai nama yang sama dengan fail yang sepadan dengan akhiran

      .
    • Pelaksanaan pemuat auto tidak boleh .php membuang pengecualian,

      tidak boleh
    • mencetuskan sebarang tahap mesej ralat dan
    • Sepatutnya

      mempunyai nilai pulangan. Contoh

    • Jadual berikut menunjukkan laluan fail yang sepadan dengan nama kelas lengkap, awalan ruang nama dan direktori asas fail yang mematuhi spesifikasi .
Buat masa ini, kami hanya akan memperkenalkan tiga spesifikasi yang biasa digunakan ini.

Klik untuk melihat lebih banyak cadangan spesifikasi terkini

完整类名 命名空间前缀 文件基目录 文件路径
AcmeLogWriterFile_Writer AcmeLogWriter ./acme-log-writer/lib/ ./acme-log-writer/lib/File_Writer.php
AuraWebResponseStatus AuraWeb /path/to/aura-web/src/ /path/to/aura-web/src/Response/Status.php
SymfonyCoreRequest SymfonyCore ./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.php
ZendAcl Zend /usr/includes/Zend/ /usr/includes/Zend/Acl.php

Bahagian ini terutamanya memperkenalkan spesifikasi pengekodan PHP PSR Adalah disyorkan agar semua orang cuba mengikuti spesifikasi ini semasa pembangunan , terutamanya Apabila membangun sebagai satu pasukan, kita tidak sepatutnya mempunyai gaya pengekodan kita sendiri, tetapi harus menyatukan gaya itu sebaik mungkin. Seperti yang dinyatakan oleh niat asal organisasi PHP-FIG, spesifikasi yang mereka tetapkan bukan untuk menyekat kebebasan pengekodan semua orang, tetapi untuk mencari persamaan supaya kita boleh bekerjasama dengan lebih baik.

Pembelajaran yang disyorkan: "Tutorial Video PHP

"

Atas ialah kandungan terperinci Rangka Kerja API PHP Tulisan Tangan (1) Spesifikasi PSR. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam