PHPはさらに良くなる

注目を集めるPHP象







PHP — . PHP, {lang_name}



. - .







PHP . . . " — — — " .







PHP . , backend , . . . , .









. . , , . " " " ". , .


1.



. JavaScript .







let str = "1,2,3";

let arr = str.split(",");

arr = arr.map(_ => _ * 2);

console.log(arr); // [2, 4, 6]
      
      





, , , ..







JavaScript, , , . , String



, .







PHP - ?







$str = '1,2,3';

$arr = $str->explode(',');

$arr = $arr->map(function ($i) {
    return $i * 2;
});

var_dump($arr);

//   :

$str = '1,2,3';

$arr = $str
    ->explode(',')
    ->map(function ($i) {
        return $i * 2;
    });

var_dump($arr);
      
      





, String



Array



. .







$arr->keyExists(...);
$arr->map(...);
$arr->filter(...);
$arr->keys(...);
$arr->push(...);
$arr->pop(...);
$arr->exists(...); // in_array

$str->repeat(...);
$str->join(...);
$str->trim(...);
$str->replace(...);
      
      





: . ? , is_iterable



, is_numeric



, is_countable



, c instanceof



\Countable



, \Traversable



.. ?







2.



, Java. . DI , , :







$service = $container->get<SomeService>();
      
      





, (Yii2 Query Doctrine).







, , type hinting ( ). , :







public function getItems(): Array<Item>

public function setItems(Array<Item>): void
      
      





, ? , , IDE , PHPDoc . , :







public function getItems(): Collection<Item>

public function setItems(Collection<Item>): void
      
      





PHPDoc (SomeObject[]



), . , , ( array



, ).







3.



Java 1.6 ( ). . (Java , , - )

JavaScript — ( , , Babel).

PHP? PHP PHPDoc , . , . , Doctrine PHP-DI.







, Symfony Event Dispatcher. -, , getSubscribedEvents



, , — , — , . . , . ? . - , , -, getSubscribedEvents



, (), () . , - , , . . , -, IDE ( — , IDE). .

, :







@EventSubscriber(ItemEvents::CREATE)
public function itemCreated(ItemEvent $event)
      
      





, . , , . . : - , , .







IDE, . , , namespace'.







, . , , ...







4. .



JavaScript (, ..) :







$input = [...];
$output = [];

foreach ($input as $i => $item) {
    // logic
    $output[$i] = $item;  
}
      
      





ReactJS + Redux :







let output = input.map(item => {
    // logic
    return item;
});
      
      





, PHP:







$output = array_map(function($item) {
    // logic
    return $item;
}, $input);
      
      





:







$output = $input->map(($item) => {
    // logic
    return $item;
});
      
      





, PHP -, function($item) {}



- . , - ( JS). , . . RFC. , ?







5.



. JavaScript Promise. , .







PHP , , . HTTP . , , , . , Slack Mailgun . HTTP . , ? . .







PThreads, ? , , .







6.



:







class Money {
    __constuct($currency = new Currency('RUB')) {...}
}
      
      





:







class Money {
    private $currency = new Currency('RUB');

    public function setCurrency(Currency $currency) {...}
}
      
      





, , .







, , - , :







class Money {
    private $currency;

    __constuct(Currency $currency = null) {
        $this->currency = $currency ?? new Currency('RUB');
    }
}
      
      





. :







public function someMethod($value = $this->defaultValue): void

public $statuses = SomeClass::getStatuses();
      
      





.







7.



, (1) , (2) . , PHP . . , . , , PHP .







8. function





function



.







public function someMethod()
// 
public someMethod()
      
      





. , PHP, Java JavaScript, . , ? . , , . , 9 , . , .







9.



, , . , PHP , , .. : , " ", . !

, , , ( Array::method()



), deprecated



. !







, PHP , , .. (json_encode -> Json::encode



, cUrl



).

- , , , , , Codesniffer … . , . , , .









, ( ) , . . , . . , PHP , .







, , , , . ?) , , , . , .







. . , . , Java. . , .







PHP?








All Articles