За последние 24 часа нас посетили 21698 программистов и 1023 робота. Сейчас ищут 668 программистов ...

Как получить аналог кода из js в php?

Тема в разделе "PHP для новичков", создана пользователем avatar007, 15 апр 2019.

  1. avatar007

    avatar007 Активный пользователь

    С нами с:
    6 окт 2017
    Сообщения:
    4
    Симпатии:
    0
    Подскажите, как получить аналог кода из js в php? Ниже сам код js и его попытка трансляции в php, пожалуйста, ругайте сильнее, интересно, как сделать правильно :). Спасибо!

    js:
    Код (Javascript):
    1. var arrCats = [
    2.     {
    3.         name: 'Tishka',
    4.         order: 0,
    5.         eyesColor: 'red'
    6.     },
    7.     {
    8.         name: 'Koshka',
    9.         order: 1,
    10.         eyesColor: 'green'
    11.     }
    12. ];
    13.  
    14.  
    15. var greenEyesCat = arrCats.filter(function (cat) {
    16.     return cat.eyesColor === 'green';
    17. }).map(function (cat) {
    18.     return cat.name + ' с зелеными глазами';
    19. });
    20.  
    21. console.log(greenEyesCat);
    Cats.php:
    PHP:
    1. namespace App;
    2.  
    3. class Cats
    4. {
    5.     public static $color = 'yellow';
    6. }
    Index.php:

    PHP:
    1. use App\Cats;
    2.  
    3. class Cat extends Cats
    4. {
    5.     public $name, $eyes;
    6.  
    7.     public function __construct($name, $eyes) {
    8.         $this->name = $name;
    9.         $this->eyes = $eyes;
    10.     }
    11.  
    12.     public function getCatName()
    13.     {
    14.         return $this->name;
    15.     }
    16.  
    17.     public function getCatEyes()
    18.     {
    19.         return $this->eyes;
    20.     }
    21.  
    22.     public static function isCatWithColoredEyes($cat)
    23.     {
    24.         return $cat->eyes === parent::$color;
    25. //        return $cat->eyes === 'green';
    26.     }
    27.  
    28.     public static function getCatsWhithColoredEyes($arrCats)
    29.     {
    30.         return array_filter($arrCats, 'self::isCatWithColoredEyes');
    31.     }
    32.  
    33.     public static function getCatNameWhithColoredEyes($cat)
    34.     {
    35.         return $cat->name;
    36.     }
    37.  
    38.     public static function getCatsNamesWhithColoredEyes($arrColoredEyesCats)
    39.     {
    40.         return array_map('self::getCatNameWhithColoredEyes', $arrColoredEyesCats);
    41.     }
    42.  
    43. }
    44.  
    45. Cats::$color = (isset($_GET['color']) && !empty($_GET['color'])) ? $_GET['color'] : 'red';
    46. //Cats::$color = 'green';
    47.  
    48. $arrCats = [
    49.     new Cat('Тишка', 'red'),
    50.     new Cat('Кошка', 'green'),
    51.     new Cat('Пышка', 'green'),
    52. ];
    53.  
    54.  
    55. var_dump(Cat::getCatsNamesWhithColoredEyes(Cat::getCatsWhithColoredEyes($arrCats)));
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. <?php
    2. $arrCats = [
    3.     [
    4.         'name' => 'Tishka',
    5.         'order' => 0,
    6.         'eyesColor' => 'red'
    7.     ],
    8.     [
    9.        'name' => 'Koshka',
    10.        'order' => 1,
    11.        'eyesColor' => 'green'
    12.     ]
    13. ];
    14.  
    15. function greenEyesCat($arrCats){
    16.     foreach($arrCats as $item){
    17.         if($item['eyesColor'] == 'green'){
    18.             return $item['name'].' с зелеными глазами';
    19.             break;
    20.         }  
    21.     }
    22. }
    23.  
    24. echo greenEyesCat($arrCats);
    25. ?>
     
    avatar007 нравится это.
  3. avatar007

    avatar007 Активный пользователь

    С нами с:
    6 окт 2017
    Сообщения:
    4
    Симпатии:
    0

    Спасибо! В js построена цепочка в точечной нотации, возможна ли реализация в php через текучий интерфейс?
     
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @avatar007 все можно, даже с кривыми руками, это я по своему опыту говорю =)
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Не уверен, что понял, о чём речь, но если ты про обращение к свойствам и методам объектов через точку в JavaScript, то в PHP для этого используется "стрелка" ->
    PHP:
    1. echo $object->property;
    2. $res = $object->method();
    Чтобы можно было цепочки вызовов составлять - метод должен возвращать ссылку на объект своего класса
    PHP:
    1. Class Test {
    2.    
    3.     public function methodOne() {
    4.         echo 'One';
    5.         return $this;
    6.     }
    7.    
    8.     public function methodTwo() {
    9.         echo 'Two';
    10.         return $this;
    11.     }
    12. }
    13.  
    14. $test = new Test();
    15. $test->methodOne()->methodTwo();