PHP 코드를 간소화할 팁들

2019년 05월 21일

1. Null Coalescing operator

<?php // condition이 true인 경우 $_GET['test']를, false인 경우 'empty'를 반환한다. $test = isset($_GET['test']) ? $_GET['test'] : 'empty'; // 위 코드를 아래와 같이 축약할 수 있다. $test = $_GET['test'] ?? false;
 

2. Define Array

<?php // 배열을 define 할 수 있다. define('DEFINE_ARRAY', [ [ 'name' => 'ian', 'birth' => '1998-11-26', ], [ 'name' => 'girfriend', 'birth' => null, ] ]);
 

3. Anonymous Class

<?php interface Logger { public function log(string $msg); } var_dump(new class implements Logger { public function log(string $msg) { echo $msg; } });
// result object(class@anonymous)#1 (0) { }
 

4. Unicode codepoint escape syntax

<?php echo "\u{9999}"; // 香
 

5. Group use declarations

<?php // PHP 7 이전 use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP 7 이후 use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC};
 

6. Generator Return Expressions

<?php $test = (function() { yield 1; yield 2; return 3; })(); echo '-- yield --'.PHP_EOL; foreach ($test as $val) { var_dump($val).PHP_EOL; } echo '-- return --'.PHP_EOL; var_dump($test->getReturn());
-- yield -- int(1) int(2) -- return -- int(3)
 

7. Generator delegation

<?php function gen() { yield 1; yield 2; yield from gen2(); } function gen2() { yield 3; yield 4; } foreach (gen() as $val) { echo $val, PHP_EOL; }
// result 1 2 3 4