āĻāϤ ⧍ā§ĻāĻļā§ āĻā§āύ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ ā§Ģ.ā§Ģ āϰāĻŋāϞāĻŋāĻ āĻĒā§āϞā§āĻ āĻāĻĒāĻā§āϰā§āĻĄ āĻāϰāĻž āĻšāϝāĻŧā§ āĻāĻ ā§āύāĻŋ āĨ¤ āĻāĻ āĻāĻāĻā§ āĻāĻā§ āĻāĻĒāĻā§āϰā§āĻĄ āĻāϰā§āĻ āĻāĻžāĻŦāϞāĻžāĻŽ āύāϤā§āύ āĻĢāĻŋāĻāĻžāϰāĻā§āϞ⧠āϏāĻŽā§āĻŦāύā§āϧ⧠āϞāĻŋāĻā§ āĻĢā§āϞāĻŋ āĨ¤ āϤ⧠āĻāϏā§āύ āĻĻā§āĻā§ āύā§āĻ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝ āύāϤā§āύ āĻĢāĻŋāĻāĻžāϰāĻā§āϞ⧠āĻāĻŋ āĻāĻŋ āĨ¤
#ā§§ – āĻā§āύāĻžāϰā§āĻāϰ
āĻāĻŽāϰāĻž āĻĒāĻŋāĻāĻāĻāĻĒāĻŋāϤ⧠āĻāĻāĻāĻžāϰā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāϤāĻĻāĻŋāύ Iterator āĻāύā§āĻāĻžāϰāĻĢā§āĻāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāϏā§āĻāĻŋ āĨ¤ āĻāĻŋāύā§āϤ⧠āύāϤā§āύ āĻāϏāĻž āĻā§āύāĻžāϰā§āĻāϰ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŽāϰāĻž āĻāĻāĻāĻžāϰā§āĻļāύāĻāĻž āĻāϰ⧠āϏāĻšāĻā§ āĻšā§āϝāĻžāύā§āĻĄāϞ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āĨ¤
āĻā§āύāĻžāϰā§āĻāϰ āĻāϏāϞ⧠āĻāĻŋ? āĻā§āύāĻžāϰā§āĻāϰ āĻšāĻā§āĻā§ āĻĢāĻžāĻāĻļāύā§āϰ āĻŽāϤāĻ āĻāĻŋāύā§āϤ⧠āĻĢāĻžāĻāĻļāύ āĻāĻāĻŦāĻžāϰ āĻŽāĻžāϤā§āϰ āĻā§āϝāĻžāϞ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŋāύā§āϤ⧠āĻā§āύāĻžāϰā§āĻāϰ āϝāϤāĻŦāĻžāϰ āĻā§āĻļāĻŋ āĻā§āϝāĻžāϞ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠yield āĻāĻŋāĻāϝāĻŧāĻžāϰā§āĻĄāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĨ¤ āĻā§āύāĻžāϰā§āĻāϰ āĻĨā§āĻā§ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻž āϏāĻŦ āĻā§āϝāĻžāϞ⧠āĻāĻāĻāĻŋ āϏāĻŋāĻā§āϝāĻŧā§āύā§āϏ āĻšāĻŋāϏā§āĻŦā§ āĻĨāĻžāĻā§ āϝā§āĻāĻŋ āĻāĻŋāύāĻž āĻāĻāĻāĻžāϰā§āĻ āĻāϰāĻž āϝāĻžāϝāĻŧ āĻ
āύā§āϝāϏāĻŦ āĻāĻāĻāĻžāϰā§āĻāϰ (āϝā§āĻŽāύ: āĻā§āϝāĻžāϰā§) āĻāϰ āĻŽāϤ āĻāϰā§āĻ (āϝā§āĻŽāύ: foreach āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§) āĨ¤ āĻā§āύāĻžāϰā§āĻāϰ āϝā§āĻšā§āϤ⧠āĻāĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāϰ⧠āĻā§āϝāĻžāϞ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰā§, āϏā§āĻšā§āϤ⧠āϏāĻŦ āĻĄāĻžāĻāĻž āĻāĻ āϏāĻžāĻĨā§ āĻā§āϝāĻžāϰ⧠āϤ⧠āϰāĻžāĻāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻĒāĻĄāĻŧā§ āύāĻž āĨ¤ āĻĢāϞ⧠āĻŽā§āĻŽā§āϰ⧠āϏā§āĻāĻ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āĨ¤ āϝā§āĻŽāύ, range(0,1000000) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϝāĻĻāĻŋ āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻā§āϝāĻžāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻŋ āĻāĻ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ āϏāĻāĻā§āϝāĻžāϰ, āϤāĻžāĻšāϞ⧠āϤāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻžāϝāĻŧ ā§§ā§Ļā§Ļ āĻŽā§āĻāĻžāĻŦāĻžāĻāĻ āĻŽā§āĻŽā§āϰ⧠āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§ āĨ¤ āĻāĻāĻ āĻāĻžāĻ āϝāĻĻāĻŋ āĻā§āύāĻžāϰā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāϰāĻŋ āϤāĻŦā§ āĻĨāĻŋāĻāϰā§āĻāĻŋāĻā§āϝāĻžāϞāĻŋ āĻāĻāύā§āĻ ā§§ āĻāĻŋāϞā§āĻŦāĻžāĻāĻ āĻāϰ āĻŦā§āĻļā§ āĻŽā§āĻŽā§āϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻĒāĻĄāĻŧāĻŦā§ āύāĻž āĨ¤
āĻāϞā§āύ āĻā§āύāĻžāϰā§āĻāϰā§āϰ āĻā§āĻĄ āĻāĻā§āϏāĻžāĻŽā§āĻĒāϞ āĻĻā§āĻāĻŋ –
|
<?php function generateOdds($ceiling) { for ($i = 0; $i < $ceiling; $i++) { if (($i % 2) != 0) { yield $i; } } } foreach (generateOdds(10) as $number) { echo $number . PHP_EOL; } |
āĻāĻāĻāĻĒā§āĻ:
|
Lighthouse: ~/Codes/php/55 â php generators.php 1 3 5 7 9 |
#⧍ – finally āĻŦā§āϞāĻ
āĻĒāĻŋāĻāĻāĻāĻĒāĻŋāϤ⧠āĻāĻŽāϰāĻž āĻāĻā§āϏā§āĻĒāĻļāύ āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻ āĻāϰ āĻāύā§āϝ āĻāϤāĻĻāĻŋāύ try..catch āĻŦā§āϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāϏā§āĻāĻŋ āĨ¤ āĻāĻŦāĻžāϰ āĻāĻŽāϰāĻž āϏā§āĻ āϏāĻžāĻĨā§ āĻĒāĻžāĻā§āĻāĻŋ āĻāϰā§āĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϞāĻ – finally āĨ¤ āĻāĻ āĻŦā§āϞāĻ āϏāĻŦ āϏāĻŽāϝāĻŧāĻ āϰāĻžāύ āĻāϰāĻŦā§ āĨ¤ āĻ
āϰā§āĻĨāĻžā§ āĻāĻā§āϏā§āĻĒāĻļāύ āĻĨāĻžāĻā§āĻ āĻŦāĻž āύāĻžāĻ āĻĨāĻžāĻā§āĻ āĻāĻ āĻŦā§āϞāĻ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻā§āĻ āĻŦā§āĻā§ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āĻāϰāĻŦā§ āĨ¤ āĻāĻ āĻŦā§āϞāĻā§āϰ āϏā§āĻŦāĻŋāϧāĻžāĻāĻž āĻāĻŋ? āϧāϰā§āύ āĻāĻĒāύāĻŋ try āĻŦā§āϞāĻā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻāĻ āĻāĻžāύā§āĻāĻļāύ āĻāĻĒā§āύ āĻāϰā§āĻāĻŋāϞā§āύ āĨ¤ āĻāϰāĻĒāϰ āĻĒā§āϞā§āύ āĻāĻāĻāĻŋ āĻāĻā§āϏā§āĻĒāĻļāύ āĻāĻŦāĻ āϏā§āĻāĻŋāĻā§ āĻšā§āϝāĻžāύā§āĻĄāϞ āĻāϰāϞā§āύ āĻāĻŋāύā§āϤ⧠āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻāĻ āĻāĻžāύā§āĻāĻļāύ? āĻāĻāĻž āϤ⧠āĻŦāύā§āϧ āĻāϰāĻž āĻĻāϰāĻāĻžāϰ, āϤāĻžāĻ āύāĻž? āĻāĻ āϏā§āϝā§āĻāĻāĻžāĻ āĻāĻĒāύāĻŋ āĻĒāĻžāĻā§āĻā§āύ finally āĻŦā§āϞāĻā§ āĨ¤
āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ āĻĨā§āĻā§āĻ āĻā§āĻĄ āϏā§āϝāĻžāĻŽā§āĻĒāϞ āϤā§āϞ⧠āĻĻā§āĻ –
|
function inverse($x) { if (!$x) { throw new Exception('Division by zero.'); } return 1/$x; } try { echo inverse(5) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally { echo "First finally.\n"; } |
#ā§Š – āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ āĻāĻĒāĻŋāĻāĻ
āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻšā§āϝāĻžāĻļāĻŋāĻ āϏāĻšāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻ āĻāĻžāϰā§āϏāύ⧠āĻāϏā§āĻā§ – password_hash() āĻāĻŦāĻ password_verify() āĨ¤ password_hash āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻĻā§āĻāĻāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰ⧠– āĻā§āĻā§āϏāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻāĻŦāĻ āĻšā§āϝāĻžāĻļāĻŋāĻ āĻā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ (āĻ
āύā§āĻāĻā§āϞ⧠āĻĒā§āϰāĻŋāĻĄāĻŋāĻĢāĻžāĻāύā§āĻĄ āĻāύāϏā§āĻāĻžāύā§āĻ āĻāĻā§) āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
|
<?php $password = "ohmypwd"; $hash = password_hash($password, PASSWORD_DEFAULT); var_dump($hash); var_dump(password_verify($password, $hash)); |
āĻāĻāĻāĻĒā§āĻ:
|
Lighthouse: ~/Codes/php/55 â php password.php string(60) "$2y$10$tjGVQcE0TofEAJdgzlpJAO.BNZQ3L.aUHNnGYyZbhT8GHAnBml.qS" bool(true) |
#ā§Ē – āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ
āĻāĻŦāĻžāϰ āĻā§āϝāĻžāϰ⧠āĻāĻŦāĻ āϏā§āĻā§āϰāĻŋāĻ āϞāĻŋāĻāĻžāϰā§āϞā§āϰ āĻŦā§āϞāĻžāϝāĻŧāĻ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ āĻĢāĻŋāĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ –
|
<?php echo 'Array dereferencing:'; echo [4,5,6][0]; echo "\n"; echo 'String dereferencing:'; echo 'HELLO'[0]; echo "\n"; |
#ā§Ģ – āĻā§āϞāĻžāϏ āύā§āĻāĻŽ āϰā§āĻā§āϞā§āĻļāύ
āϧāϰā§āύ āĻāĻĒāύāĻŋ āĻā§āύ āĻāĻāĻāĻŋ āύā§āĻāĻŽāϏā§āĻĒā§āĻāϏ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻā§āϞāĻžāϏ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰā§āĻā§āύ āĨ¤ āĻāĻāύ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ āĻ āĻā§āϞāĻžāϏ āĻāϰ āύā§āĻāĻŽāϏā§āĻĒā§āĻāϏ āϏāĻš āĻĒā§āϰ⧠āύāĻžāĻŽā§āϰ, āϤāĻāύ āĻāĻŋ āĻāϰāĻŦā§āύ? āĻāϰ āĻŦāĻŋāĻļā§āώ āĻāϰ⧠āϝāĻĻāĻŋ use…as āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āϞāĻžāϏāĻāĻŋāĻā§ āĻ
āύā§āϝ āύāĻžāĻŽā§ āĻāĻŽā§āĻĒā§āϰā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āϤāĻŦā§ āĻŦā§āϝāĻžāĻĒāĻžāϰāĻāĻŋ āĻāϰ⧠āĻāĻāĻŋāϞ āĻšāϝāĻŧā§ āĻĻāĻžāĻĄāĻŧāĻžāϝāĻŧ āĨ¤ āĻāĻ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻšāĻ āϏāĻŽāĻžāϧāĻžāύ āύāĻŋāϝāĻŧā§ āĻāϏā§āĻā§ āĻā§āϞāĻžāϏ āύā§āĻāĻŽ āϰā§āĻā§āϞā§āĻļāύ āĨ¤ āϝā§āĻā§āύ⧠āĻā§āϞāĻžāϏ⧠class āĻāĻŋāĻāϝāĻŧāĻžāϰā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĢā§āϞ āύā§āĻāĻŽ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāĻŦā§ āĻāĻāĻžāĻŦā§ – MyClass::class
|
<?php namespace Test; class MyClass { } namespace TestOutput; use Test\MyClass as ThatClass; echo ThatClass::class; |
āĻāĻāĻāĻĒā§āĻ:
|
ighthouse: ~/Codes/php/55 â php classnameres.php Test\MyClass |
āĻ
āύā§āϝāĻžāύā§āϝ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ
āĻ
āύā§āϝāĻžāύā§āϝ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻŽāϧā§āϝ āĻāĻā§ –
# foreach āϞā§āĻĒā§ list() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧ
# foreach āϞā§āĻĒā§ āύāύ-āϏā§āĻā§āϝāĻžāϞāĻžāϰ (āϏā§āĻā§āϰāĻŋāĻ āĻŦāĻž āύāĻžāĻŽā§āĻŦāĻžāϰ āĻŦāĻžāĻĻā§āϰ āĻ
āύā§āϝ āĻāĻžāĻāĻĒā§āϰ āĻā§āϝāĻžāϞā§) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧ
# OpCache āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒāĻžāϰā§āĻĢāϰāĻŽā§āύā§āϏ āĻ āĻāĻŽā§āĻĒā§āϰā§āĻāĻŽā§āύā§āĻ