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?



Source: https://habr.com/ru/post/J354742/


All Articles