Почему функции или классы php не могут работать как плагины jquery? - PullRequest
0 голосов
/ 03 ноября 2011

Почему функции или классы 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);

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

echo test($parameter_2 = true);

Вы видите, что я считаю, что php произвольный и немного "отстает" ??

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

Ответы [ 4 ]

3 голосов
/ 03 ноября 2011

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

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

Но я сомневаюсь, что вы найдете это довольно.

1 голос
/ 03 ноября 2011

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

1 голос
/ 03 ноября 2011

То, что вы описываете, это две разные вещи. В примере 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)
0 голосов
/ 09 ноября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...