Karatasi ya Maelezo ya PHP
Rejeleo linalotafutika na linaloweza kuchapishwa la PHP 8.3+ — sintaksia, mifuatano, safu, vitendakazi, klasi, enums, sifa na vipengele vya kisasa. Bila malipo.
Misingi na aina
10declare(strict_types=1);
Lazimisha ukaguzi mkali wa aina za scalar
$x = 1;
Vigeu huanza na alama ya dola
const MAX = 100;
Const ya wakati wa compile
gettype($x)
Pata aina ya thamani
(int) $x
Geuza kuwa integer
is_int($x)
Msaidizi wa kukagua aina (is_string, ...)
int|string $x
Tangazo la aina ya union
?string $x
Aina inayoruhusu null (string au null)
$a ?? 'default'
Operator wa null coalescing
$a ??= 'default'
Pa thamani tu kama ni null
Strings
11"Hello $name"
Nukuu mbili huingiza vigeu
'literal $x'
Nukuu moja ni za halisi
$a . $b
Unganisha strings
strlen($s)
Urefu wa byte wa string
str_contains($s, 'a')
Angalia substring
str_starts_with($s, 'a')
Angalia prefix
substr($s, 0, 3)
Toa sehemu ya string
str_replace('a', 'b', $s)
Badilisha matukio yote
explode(',', $s)
Gawanya kuwa array
sprintf('%05.2f', $n)
Matokeo ya string yaliyopangwa
trim($s)
Ondoa nafasi zinazozunguka
Arrays
11$a = [1, 2, 3];
Array literal yenye index
$a = ['k' => 'v'];
Associative array
array_map(fn($x) => $x * 2, $a)
Badilisha kila kipengele
array_filter($a, fn($x) => $x > 0)
Weka vipengele vinavyolingana
array_reduce($a, $fn, 0)
Punguza kuwa thamani moja
in_array($v, $a, true)
Ukaguzi mkali wa thamani
array_keys($a)
Pata keys zote
array_merge($a, $b)
Unganisha arrays
[...$a, ...$b]
Tawanya/unganisha arrays
count($a)
Idadi ya vipengele
[$x, $y] = $a;
Array destructuring
Functions
9function f(int $a): int {}
Parameters na return zenye aina
function f(int $a = 1) {}
Thamani chaguo-msingi ya parameter
function f(int ...$nums) {}
Variadic parameters
f(...$args)
Tawanya arguments
f(name: 'Sam', age: 30)
Arguments zenye majina
$fn = fn($x) => $x + 1;
Arrow function (hukamata wigo otomatiki)
function () use ($x) {}
Closure inayokamata kigeu
$fn = strlen(...);
Sintaksia ya first-class callable
function f(): never {}
Hairudishi kamwe (hutupa au hutoka)
Mtiririko wa udhibiti
9if ($a) {} elseif ($b) {} else {}
Matawi ya masharti
$a ? $b : $c
Usemi wa ternary
$a ?: $b
Ternary fupi (fallback ya falsy)
match ($x) { 1, 2 => 'a', default => 'b' }
Match kali, inayotegemea usemi
switch ($x) { case 1: break; }
Tawi la njia nyingi lisilo kali
foreach ($a as $k => $v) {}
Pitia keys na thamani
for ($i = 0; $i < 10; $i++) {}
Loop iliyohesabiwa
while ($cond) {}
Rudia mradi sharti linatimia
break / continue
Toka au ruka mzunguko wa loop
Classes na OOP
10class A extends B implements C {}
Urithi na interfaces
public function __construct(private int $id) {}
Upandishaji wa property kwenye constructor
public readonly string $name;
Haibadiliki baada ya kuanzishwa
public function f(): static {}
Rudisha aina ya late-bound
static::create()
Late static binding
$obj?->method()
Wito wa method salama kwa null
abstract class A {}
Haiwezi kuundwa moja kwa moja
trait T {} use T;
Code ya mlalo inayoweza kutumika tena
$obj instanceof A
Kagua aina wakati wa runtime
A::class
String ya jina kamili la class
Enums
9enum Status { case Active; case Draft; }
Enumeration safi
enum Status: string { case A = 'a'; }
Backed enum (string/int)
Status::Active
Rejea kesi ya enum
Status::from('a')
Jenga kutoka thamani ya backing
Status::tryFrom('x')
Hurudisha null kama si halali
Status::cases()
Array ya kesi zote
$status->value
Thamani ya backing ya kesi
$status->name
Jina la kesi
enum E { public function label() {} }
Enums zinaweza kuwa na methods
Ushughulikiaji wa makosa
9try {} catch (Throwable $e) {}
Nasa makosa na exceptions
catch (TypeError | ValueError $e)
Nasa aina nyingi
catch (Exception)
Catch isiyonasa (bila kigeu)
finally {}
Huendesha kila wakati baada ya try/catch
throw new RuntimeException('x')
Tupa exception
throw $e;
Tupa tena exception iliyonaswa
$x = $v ?? throw new Error();
Tupa kama usemi
$e->getMessage()
Soma ujumbe wa kosa
$e->getPrevious()
Pata exception iliyounganishwa
Attributes na za kisasa
9#[Attribute] class Route {}
Tangaza attribute maalum
#[Route('/home')]
Tumia attribute kwenye lengo
new ReflectionClass($x)
Chunguza class kwa reflection
$ref->getAttributes()
Soma attributes zilizotangazwa
json_encode($data)
Geuza kuwa JSON
json_decode($s, true)
Geuza JSON kuwa array
array_is_list($a)
True kama keys ni 0..n kwa mpangilio
str_word_count($s)
Hesabu maneno kwenye string
$obj::class
Jina la class kutoka instance
Hakuna kipengele kinacholingana na “:q”.
Unahitaji msaada?
Umepata tatizo na zana hii? Tujulishe timu yetu.