āĻāĻ¤ ā§¨ā§ĻāĻļā§ āĻā§āĻ¨ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ ā§Ģ.ā§Ģ āĻ°āĻŋāĻ˛āĻŋāĻ āĻĒā§āĻ˛ā§āĻ āĻāĻĒāĻā§āĻ°ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻ¨āĻŋ āĨ¤ āĻāĻ āĻāĻāĻā§ āĻāĻā§ āĻāĻĒāĻā§āĻ°ā§āĻĄ āĻāĻ°ā§āĻ āĻāĻžāĻŦāĻ˛āĻžāĻŽ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻŋāĻāĻžāĻ°āĻā§āĻ˛ā§ āĻ¸āĻŽā§āĻŦāĻ¨ā§āĻ§ā§ āĻ˛āĻŋāĻā§ āĻĢā§āĻ˛āĻŋ āĨ¤ āĻ¤ā§ āĻāĻ¸ā§āĻ¨ āĻĻā§āĻā§ āĻ¨ā§āĻ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻŋāĻāĻžāĻ°āĻā§āĻ˛ā§ āĻāĻŋ āĻāĻŋ āĨ¤
#ā§§ – āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ°
āĻāĻŽāĻ°āĻž āĻĒāĻŋāĻāĻāĻāĻĒāĻŋāĻ¤ā§ āĻāĻāĻāĻžāĻ°ā§āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¤āĻĻāĻŋāĻ¨ Iterator āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¸ā§āĻāĻŋ āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¸āĻž āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻž āĻāĻ°ā§ āĻ¸āĻšāĻā§ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§ āĨ¤
āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ° āĻāĻ¸āĻ˛ā§ āĻāĻŋ? āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ° āĻšāĻā§āĻā§ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻŽāĻ¤āĻ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻāĻŦāĻžāĻ° āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻ¯āĻžāĻ˛ā§ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ° āĻ¯āĻ¤āĻŦāĻžāĻ° āĻā§āĻļāĻŋ āĻā§āĻ¯āĻžāĻ˛ā§ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ yield āĻāĻŋāĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĨ¤ āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ° āĻĨā§āĻā§ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻž āĻ¸āĻŦ āĻā§āĻ¯āĻžāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻā§āĻ¯āĻŧā§āĻ¨ā§āĻ¸ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻĨāĻžāĻā§ āĻ¯ā§āĻāĻŋ āĻāĻŋāĻ¨āĻž āĻāĻāĻāĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ āĻ¨ā§āĻ¯āĻ¸āĻŦ āĻāĻāĻāĻžāĻ°ā§āĻāĻ° (āĻ¯ā§āĻŽāĻ¨: āĻā§āĻ¯āĻžāĻ°ā§) āĻāĻ° āĻŽāĻ¤ āĻāĻ°ā§āĻ (āĻ¯ā§āĻŽāĻ¨: foreach āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§) āĨ¤ āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ° āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻ°ā§ āĻā§āĻ¯āĻžāĻ˛ā§ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§, āĻ¸ā§āĻšā§āĻ¤ā§ āĻ¸āĻŦ āĻĄāĻžāĻāĻž āĻāĻ āĻ¸āĻžāĻĨā§ āĻā§āĻ¯āĻžāĻ°ā§ āĻ¤ā§ āĻ°āĻžāĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻĒāĻĄāĻŧā§ āĻ¨āĻž āĨ¤ āĻĢāĻ˛ā§ āĻŽā§āĻŽā§āĻ°ā§ āĻ¸ā§āĻāĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĨ¤ āĻ¯ā§āĻŽāĻ¨, range(0,1000000) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻāĻ āĻŽāĻŋāĻ˛āĻŋāĻ¯āĻŧāĻ¨ āĻ¸āĻāĻā§āĻ¯āĻžāĻ°, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻžāĻ¯āĻŧ ā§§ā§Ļā§Ļ āĻŽā§āĻāĻžāĻŦāĻžāĻāĻ āĻŽā§āĻŽā§āĻ°ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§ āĨ¤ āĻāĻāĻ āĻāĻžāĻ āĻ¯āĻĻāĻŋ āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻŋ āĻ¤āĻŦā§ āĻĨāĻŋāĻāĻ°ā§āĻāĻŋāĻā§āĻ¯āĻžāĻ˛āĻŋ āĻāĻāĻ¨ā§āĻ ā§§ āĻāĻŋāĻ˛ā§āĻŦāĻžāĻāĻ āĻāĻ° āĻŦā§āĻļā§ āĻŽā§āĻŽā§āĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻĒāĻĄāĻŧāĻŦā§ āĻ¨āĻž āĨ¤
āĻāĻ˛ā§āĻ¨ āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻā§āĻĄ āĻāĻā§āĻ¸āĻžāĻŽā§āĻĒāĻ˛ āĻĻā§āĻāĻŋ –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?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; } |
āĻāĻāĻāĻĒā§āĻ:
1 2 3 4 5 6 7 |
Lighthouse: ~/Codes/php/55 â php generators.php 1 3 5 7 9 |
#ā§¨ – finally āĻŦā§āĻ˛āĻ
āĻĒāĻŋāĻāĻāĻāĻĒāĻŋāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻā§āĻ¸ā§āĻĒāĻļāĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¤āĻĻāĻŋāĻ¨ try..catch āĻŦā§āĻ˛āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¸ā§āĻāĻŋ āĨ¤ āĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ āĻ¸āĻžāĻĨā§ āĻĒāĻžāĻā§āĻāĻŋ āĻāĻ°ā§āĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ˛āĻ – finally āĨ¤ āĻāĻ āĻŦā§āĻ˛āĻ āĻ¸āĻŦ āĻ¸āĻŽāĻ¯āĻŧāĻ āĻ°āĻžāĻ¨ āĻāĻ°āĻŦā§ āĨ¤ āĻ āĻ°ā§āĻĨāĻžā§ āĻāĻā§āĻ¸ā§āĻĒāĻļāĻ¨ āĻĨāĻžāĻā§āĻ āĻŦāĻž āĻ¨āĻžāĻ āĻĨāĻžāĻā§āĻ āĻāĻ āĻŦā§āĻ˛āĻ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻā§āĻ āĻŦā§āĻā§ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻ āĻāĻ°āĻŦā§ āĨ¤ āĻāĻ āĻŦā§āĻ˛āĻā§āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻž āĻāĻŋ? āĻ§āĻ°ā§āĻ¨ āĻāĻĒāĻ¨āĻŋ try āĻŦā§āĻ˛āĻā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻāĻ āĻāĻžāĻ¨ā§āĻāĻļāĻ¨ āĻāĻĒā§āĻ¨ āĻāĻ°ā§āĻāĻŋāĻ˛ā§āĻ¨ āĨ¤ āĻāĻ°āĻĒāĻ° āĻĒā§āĻ˛ā§āĻ¨ āĻāĻāĻāĻŋ āĻāĻā§āĻ¸ā§āĻĒāĻļāĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻāĻŋāĻā§ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛ āĻāĻ°āĻ˛ā§āĻ¨ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻāĻ āĻāĻžāĻ¨ā§āĻāĻļāĻ¨? āĻāĻāĻž āĻ¤ā§ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ°, āĻ¤āĻžāĻ āĻ¨āĻž? āĻāĻ āĻ¸ā§āĻ¯ā§āĻāĻāĻžāĻ āĻāĻĒāĻ¨āĻŋ āĻĒāĻžāĻā§āĻā§āĻ¨ finally āĻŦā§āĻ˛āĻā§ āĨ¤
āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻĨā§āĻā§āĻ āĻā§āĻĄ āĻ¸ā§āĻ¯āĻžāĻŽā§āĻĒāĻ˛ āĻ¤ā§āĻ˛ā§ āĻĻā§āĻ –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻĻā§āĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§ – āĻā§āĻā§āĻ¸āĻ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ, āĻāĻŦāĻ āĻšā§āĻ¯āĻžāĻļāĻŋāĻ āĻā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ (āĻ āĻ¨ā§āĻāĻā§āĻ˛ā§ āĻĒā§āĻ°āĻŋāĻĄāĻŋāĻĢāĻžāĻāĻ¨ā§āĻĄ āĻāĻ¨āĻ¸ā§āĻāĻžāĻ¨ā§āĻ āĻāĻā§) āĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ:
1 2 3 4 5 6 |
<?php $password = "ohmypwd"; $hash = password_hash($password, PASSWORD_DEFAULT); var_dump($hash); var_dump(password_verify($password, $hash)); |
āĻāĻāĻāĻĒā§āĻ:
1 2 3 4 |
Lighthouse: ~/Codes/php/55 â php password.php string(60) "$2y$10$tjGVQcE0TofEAJdgzlpJAO.BNZQ3L.aUHNnGYyZbhT8GHAnBml.qS" bool(true) |
#ā§Ē – āĻĄāĻŋāĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĻŋāĻ
āĻāĻŦāĻžāĻ° āĻā§āĻ¯āĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻ˛āĻŋāĻāĻžāĻ°ā§āĻ˛ā§āĻ° āĻŦā§āĻ˛āĻžāĻ¯āĻŧāĻ āĻĄāĻŋāĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĻŋāĻ āĻĢāĻŋāĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ –
1 2 3 4 5 6 7 8 9 |
<?php echo 'Array dereferencing:'; echo [4,5,6][0]; echo "\n"; echo 'String dereferencing:'; echo 'HELLO'[0]; echo "\n"; |
#ā§Ģ – āĻā§āĻ˛āĻžāĻ¸ āĻ¨ā§āĻāĻŽ āĻ°ā§āĻā§āĻ˛ā§āĻļāĻ¨
āĻ§āĻ°ā§āĻ¨ āĻāĻĒāĻ¨āĻŋ āĻā§āĻ¨ āĻāĻāĻāĻŋ āĻ¨ā§āĻāĻŽāĻ¸ā§āĻĒā§āĻāĻ¸ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ āĻāĻŽā§āĻĒā§āĻ°ā§āĻ āĻāĻ°ā§āĻā§āĻ¨ āĨ¤ āĻāĻāĻ¨ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ āĻā§āĻ˛āĻžāĻ¸ āĻāĻ° āĻ¨ā§āĻāĻŽāĻ¸ā§āĻĒā§āĻāĻ¸ āĻ¸āĻš āĻĒā§āĻ°ā§ āĻ¨āĻžāĻŽā§āĻ°, āĻ¤āĻāĻ¨ āĻāĻŋ āĻāĻ°āĻŦā§āĻ¨? āĻāĻ° āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¯āĻĻāĻŋ use…as āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻ˛āĻžāĻ¸āĻāĻŋāĻā§ āĻ āĻ¨ā§āĻ¯ āĻ¨āĻžāĻŽā§ āĻāĻŽā§āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°āĻāĻŋ āĻāĻ°ā§ āĻāĻāĻŋāĻ˛ āĻšāĻ¯āĻŧā§ āĻĻāĻžāĻĄāĻŧāĻžāĻ¯āĻŧ āĨ¤ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻšāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸ā§āĻā§ āĻā§āĻ˛āĻžāĻ¸ āĻ¨ā§āĻāĻŽ āĻ°ā§āĻā§āĻ˛ā§āĻļāĻ¨ āĨ¤ āĻ¯ā§āĻā§āĻ¨ā§ āĻā§āĻ˛āĻžāĻ¸ā§ class āĻāĻŋāĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĢā§āĻ˛ āĻ¨ā§āĻāĻŽ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§ āĻāĻāĻžāĻŦā§ – MyClass::class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php namespace Test; class MyClass { } namespace TestOutput; use Test\MyClass as ThatClass; echo ThatClass::class; |
āĻāĻāĻāĻĒā§āĻ:
1 2 3 |
ighthouse: ~/Codes/php/55 â php classnameres.php Test\MyClass |
āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻāĻā§ –
# foreach āĻ˛ā§āĻĒā§ list() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ
# foreach āĻ˛ā§āĻĒā§ āĻ¨āĻ¨-āĻ¸ā§āĻā§āĻ¯āĻžāĻ˛āĻžāĻ° (āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻŦāĻž āĻ¨āĻžāĻŽā§āĻŦāĻžāĻ° āĻŦāĻžāĻĻā§āĻ° āĻ
āĻ¨ā§āĻ¯ āĻāĻžāĻāĻĒā§āĻ° āĻā§āĻ¯āĻžāĻ˛ā§) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ
# OpCache āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻžāĻ°ā§āĻĢāĻ°āĻŽā§āĻ¨ā§āĻ¸ āĻ āĻāĻŽā§āĻĒā§āĻ°ā§āĻāĻŽā§āĻ¨ā§āĻ