Почему функции или классы php не могут работать как плагины jquery?

#php #javascript #jquery #oop #php-5.3

#php #javascript #jquery #ооп #php-5.3

Вопрос:

Почему функции или классы php не могут работать как плагины jquery / javascript?

Например,

плагин jquery,

 (function($){

    // Attach this new method to jQuery
    $.fn.extend({ 

        // This is where you write your plugin's name
        popup: function(options) {

            // Set the default values, use comma to separate the settings, example:
            var defaults = {
                widthPopup:         500,
                absoluteLeft:       '500px'
            }

            var options =  $.extend(defaults, options);
            var o = options;

            var $cm = this.click(function(e){

                ...

                return false;

            });

        }
    });

})(jQuery);
  

а затем вот как вы можете использовать плагин,

 $('.click-me').popup();
  

или

 $('.click-me').popup({widthPopup:300,absoluteLeft:'50%' });
  

или

 $('.click-me').popup({absoluteLeft:'50%' });
  

что касается функции php,

 function test($parameter_1 = 100, $parameter_2 = false) {
 ....
}
  

и вы должны вызвать функцию следующим образом,

 echo test();
  

или

 echo test($parameter_1 = 50, $parameter_2 = true);
  

или

 echo test(10, true);
  

и это не сработает, если вы вызовете функцию следующим образом,

 echo test($parameter_2 = true);
  

Можете ли вы увидеть, что я нахожу, что php произвольный и немного «отстает»??

Или, может быть, есть какой-то продвинутый уровень php, который я еще не изучил??

Комментарии:

1. отстаете? Это разные языки. Не могу их так сравнивать. Естественным предложением было бы выучить язык и использовать его по мере необходимости, а не ожидать, что он будет таким же, как другой

2. Почему апельсины не могут быть похожи на яблоки?

Ответ №1:

Вы смешиваете хэш в качестве аргумента с обычными аргументами. Вы все еще можете сделать это на PHP:

 echo test(array('parameter_2' => true));
echo test(array('parameter_1' => false, 'parameter_2' => true));
  

Но я сомневаюсь, что вы находите это красивым.

Комментарии:

1. спасибо за мысли. да, я не нахожу это красивым. просто не могу придумать, как сделать php «красивым»!

Ответ №2:

То, что вы описываете, — это две разные вещи. В примере JavaScript вы передаете ассоциативный массив (hash, map, JSON, что угодно …), Но в PHP вы используете именованные параметры.

Таким образом, соответствующий код в PHP будет

 function test($parameters) { ... }
  

и вызов его через

 test(array('parameter_1' => 50, 'paramater2' => true));
  

это не так красиво, как версия JavaScript, но делает то же самое. По сути, единственное отличие здесь в том, что в JavaScript вам не нужно использовать array() функцию для создания ассоциативного массива, вы можете просто ввести

 { javascript: "is", cool: true }
  

и это будет работать. Альтернатива PHP здесь

 array("javascript" => "is", "cool" => true)
  

Комментарии:

1. Круто! Вы использовали слова «javascript» и «красивый» в одном предложении!

2. @LarryLustig Учитывая языки, которые используют люди (Java, C , PHP и даже Python), JavaScript очень красив 🙂 но только в руках человека, который знает, как сделать его красивым.

3. «JavaScript очень красивый», вот что я подумал, и именно поэтому я поднял вопрос о php — я знаю, что они разные. php может быть очень некрасиво закодирован, зависит от программиста.

Ответ №3:

Основная причина в том, что jQuery — это javascript, который является языком-прототипом. PHP просто не является языком-прототипом.

Ответ №4:

Или, может быть, есть какой-то продвинутый уровень php, который я еще не изучил??

Да, есть некоторый базовый уровень php, который вы еще не изучили