Setiap artikel yang mengkritik PHP, diikuti dengan penjelasan mengapa "$" dalam notasi variabel mengacaukan sintaks, pasti akan memberi tahu Anda tentang betapa buruknya penamaan fungsi dalam inti dan ekstensi PHP . Dan jika "$" tetap dalam standar bahasa dan hati kita selamanya (bahkan jika hanya sebagai pengingat PHP lama yang bagus), maka sudah saatnya untuk melakukan sesuatu dengan penamaan fungsi.
TLDR;
Penulis mengusulkan aturannya sendiri untuk penamaan fungsi inti PHP dan distribusinya berdasarkan namespace.
Library PHP Standar
Pertama-tama, saya akan memberi tahu Anda sedikit tentang kebingungan terminologis yang sengaja saya perkenalkan di artikel ini.
Standard PHP Library (SPL) sudah ada sebagai ekstensi mandiri . SPL menyediakan struktur data, pengecualian, iterator, dan banyak lagi, tetapi tidak ada hubungannya dengan fungsi dasar, seperti fungsi untuk bekerja dengan string . Mereka, menurut pendapat saya, jauh dari perangkat penerjemah PHP, hanya ada di suatu tempat di kernel dan, seolah-olah, bagian dari standar bahasa.
Saya percaya bahwa fungsi dasar harus dipisahkan menjadi ekstensi terpisah dan nama yang paling sesuai untuk itu adalah Standard PHP Library.
Masalah
Ada banyak kekurangan dalam penamaan fungsi dan, secara umum, dalam organisasinya. Fungsi untuk bekerja dengan string adalah contoh buku teks , jadi saya akan mempertimbangkannya di bawah ini.
Masalah yang paling menonjol:
: «‎str_» (str_split), «‎str» (strrev), «‎substr_» (substr_compare), - (trim);
, , strncmp : «‎str1» «‎str2», strnatcasecmp: «‎string1» «‎string2», substr_compare: «‎haystack» «‎needle»;
-
: strtr, strncmp, strpbrk, strrchr ..;
, , substr_replace ;
false , , strrpos;
: soundex, levenshtein ..
, . , . , , — «‎ ».
, html- . , , , .
, , — . , , , , , PHP , . ? , , .
.
PHP 8.2 — ;
PHP 8.3 — , , , ;
PHP 9 — deprecated, , legacy ,
PHP 10 — end of life legacy .
, 7 8 - 5 , , 10 .
, , . , , . «‎\», .
- PSR-4. «‎Php», . , «‎Php\Spl».
: PSR-12 .
- , . , «‎str_» «‎str», .
lowerCamelCase.
. .
. .
, , .
. sscanf , null. , .
IDE , .
.
. «‎mixed» .
union- nullable-.
«‎null» , .
.
proof of concept , , , — https://github.com/marvin255/php-spl-proposal/blob/master/src/StringUtilities.php.
— .
. , , : , IDE , cms.
.
strnatcmp(“test1”, “test2”);
//
StringUtilities::compareUsingNaturalOrder(“test1”, “test2”);
str_contains(”test”, “t”);
//
StringUtilities::contains(”test”, “t”);
, , , . , , — .
, json , , . , , — . .
- . , , PHP.
. , , PHP 7 8, .
Dengan artikel saya, saya hanya ingin memancing dialog dan menanam benih keraguan. Seseorang harus melakukan ini, dan saya yakin komunitaslah yang harus mendorong pengelola untuk berpikir bahwa perubahan ini tidak dapat dihindari.