PHP Дополнительные параметры - Укажите значение параметра по имени? -- php поле с участием function поле с участием optional-parameters поле с участием user-defined-functions пол Связанный проблема

PHP Optional Parameters - specify parameter value by name?


7
vote

проблема

русский

Я знаю, что можно использовать дополнительные аргументы следующим образом:

 <код> function doSomething($do, $something = "something") {  }  doSomething("do"); doSomething("do", "nothing");   

Но предположим, что у вас есть следующая ситуация:

 <код> function doSomething($do, $something = "something", $or = "or", $nothing = "nothing") {  }  doSomething("do", $or=>"and", $nothing=>"something");   

Так что в вышеуказанной строке он бы по умолчанию <код> $something на «что-то», даже если я устанавливаю значения для всего остального. Я знаю, что это возможно в .NET - я использую это все время. Но мне нужно сделать это в PHP, если это возможно.

Кто-нибудь может сказать мне, если это возможно? Я изменяю партнерскую программу Omnistar, которую я интегрировал в корзину STRISPIRE - поэтому я хочу сохранить функцию, работающую как обычные для любых мест, где я не меняю звонок в функцию, но в одном месте (который я простираю) я Хотите указать дополнительные параметры. Я не хочу создавать другую функцию, если я не придется.

Английский оригинал

I know it is possible to use optional arguments as follows:

function doSomething($do, $something = "something") {  }  doSomething("do"); doSomething("do", "nothing"); 

But suppose you have the following situation:

function doSomething($do, $something = "something", $or = "or", $nothing = "nothing") {  }  doSomething("do", $or=>"and", $nothing=>"something"); 

So in the above line it would default $something to "something", even though I am setting values for everything else. I know this is possible in .net - I use it all the time. But I need to do this in PHP if possible.

Can anyone tell me if this is possible? I am altering the Omnistar Affiliate program which I have integrated into Interspire Shopping Cart - so I want to keep a function working as normal for any places where I dont change the call to the function, but in one place (which I am extending) I want to specify additional parameters. I dont want to create another function unless I absolutely have to.

</div
           
 
 

Список ответов

12
 
vote
vote
Лучший ответ
 
<Р> Нет, в PHP, что это невозможно, так как в письменной форме. Используйте аргументы массива:
 <код> function doSomething($arguments = array()) {     // set defaults     $arguments = array_merge(array(         "argument" => "default value",      ), $arguments);       var_dump($arguments); }   
<Р> Пример использования:
 <код> doSomething(); // with all defaults, or: doSomething(array("argument" => "other value"));   
<Р> При изменении существующего метода:
 <код> //function doSomething($bar, $baz) { function   doSomething($bar, $baz, $arguments = array()) {     // $bar and $baz remain in place, old code works }   
 

No, in PHP that is not possible as of writing. Use array arguments:

function doSomething($arguments = array()) {     // set defaults     $arguments = array_merge(array(         "argument" => "default value",      ), $arguments);       var_dump($arguments); } 

Example usage:

doSomething(); // with all defaults, or: doSomething(array("argument" => "other value")); 

When changing an existing method:

//function doSomething($bar, $baz) { function   doSomething($bar, $baz, $arguments = array()) {     // $bar and $baz remain in place, old code works } 
</div
 
 
     
     
3
 
vote
<Р> Посмотрите func_get_args: Http: // Au2. php.net/manual/en/function.func-get-args.php
 

Have a look at func_get_args: http://au2.php.net/manual/en/function.func-get-args.php

</div
 
 
 
 
2
 
vote
<Р> Именованные аргументы не являются в настоящее время доступны в PHP (5.3). <Р> Чтобы обойти эту проблему, вы обычно видите функция приема аргумент <код> array() , а затем, используя <код> extract() использовать переданные аргументы в локальных переменных или <код> array_merge() их по умолчанию. <Р> Ваш оригинальный пример будет выглядеть примерно так:
 <код> $args = array('do' => 'do', 'or' => 'not', 'nothing' => 'something'); doSomething($args);   
 

Named arguments are not currently available in PHP (5.3).

To get around this, you commonly see a function receiving an argument array() and then using extract() to use the supplied arguments in local variables or array_merge() to default them.

Your original example would look something like:

$args = array('do' => 'do', 'or' => 'not', 'nothing' => 'something'); doSomething($args); 
</div
 
 
0
 
vote
<Не р> РНР не именованные параметры. Вы должны решить, на одной обходной путь. <Р> Наиболее часто используется параметр массива. Но другой умный метод с использованием параметров URL, если требуется только буквенные значения:
 <код>  function with_options($any) {       parse_str($any);    // or extract() for array params  }   with_options("param=123&and=and&or=or");   
<Р> Объединить этот подход с параметрами по умолчанию, как это подходит для вашего конкретного варианта использования.
 

PHP has no named parameters. You'll have to decide on one workaround.

Most commonly an array parameter is used. But another clever method is using URL parameters, if you only need literal values:

 function with_options($any) {       parse_str($any);    // or extract() for array params  }   with_options("param=123&and=and&or=or"); 

Combine this approach with default parameters as it suits your particular use case.

</div
 
 
   
   

Связанный проблема

1  ajax () не отвечает после события keyup  ( Ajax not responding after keyup event ) 
Это проблема jQuery / ajax. JQuery / ajax отвечает на событие keyup с оповещением (LOC), показывающим результат значения, введенного в текстовое поле числа. ...

8  Есть ли лучший способ написания GIT Pre-Commit Compart Coint, чтобы проверить любой файл PHP в фиксации для ошибок разбора?  ( Is there a better way of writing a git pre commit hook to check any php file in ) 
Что я имею до сих пор, это <код> #!/bin/sh php_syntax_check() { retval=0 for i in $(git-diff-index --name-only --cached HEAD -- | grep -e '.php$');...

0  Файл не загружается в Интернете (офлайн / локальные работы)  ( File not being uploaded online offline local works ) 
Чехол: Загрузка аватаров. Это работает в автономном режиме на моем localhost, но после того, как поместил его онлайн в 000webhost Provider, это больше не рабо...

1  PHP: профилированный код и строгая среда ~ улучшение моего кодирования  ( Php profiling code and strict environment improving my coding ) 
Я хотел бы обновить свою локальную рабочую среду, чтобы быть более строгим, чтобы улучшить мой код. Я знаю, что мой код в порядке, но как с большинством вещей...

5  Экспорт SVG в PDF в автономном TideSDK WebApp  ( Exporting svg to pdf in a offline tidesdk webapp ) 
У меня есть приложение Offline HTML5 / CSS / JS, построенное с TIDESDK, в котором гистограмма нарисована с HighCharts в качестве SVG «Tag», используя данные, ...

1  Разбор XML-документа с PHP с использованием петли «Foreach»  ( Parsing xml document with php using foreach loop ) 
Я новичок в php, mysql и xml ... и пытался обернуть голову вокруг классов, объектов, массивов и петель. Я работаю над анализатором, который извлекает данные и...

1  Транзакции mysql и php  ( Transactions mysql and php ) 
Я запутался ABT работает транзакциями через PHP-скрипт. В моем MySQL AutoCommit устанавливается на 1, Тем не менее, когда я запускаю скрипт ex: mysql_query ...

0  Ограничение результатов Flickr API, чтобы избежать дублирования фотографий от пользователя?  ( Limiting a results flickr api to avoid duplicate photos from a user ) 
пытается выводить изображения Flickr из определенного местоположения, не используя ни одного геолокации, но только строка местоположения, но это проблема для ...

-1  PHP возвращает неправильную строку в MySQLI подготовленной статусы  ( Php returning wrong row in mysqli prepared statment ) 
Я пытаюсь создать тщеславие URL для моего сайта, и на данный момент есть только одно имя пользователя в базе данных, которые можно ссылаться. Мой запрос верне...

1  add_menu_page не добавляет никаких страниц в WordPress  ( Add menu page doesnt add any pages in wordpress ) 
Я не могу понять, почему мой код не работает. Я разрабатываю плагин в WordPress, и я хочу иметь страницу на панели администратора. Я попробовал этот код, поло...

1  Yii с расширением загрузки, псевдоним «Bootstrap.widgets.tbnavbar» недействителен. Убедитесь, что он указывает на существующий файл PHP  ( Yii with bootstrap extension alias bootstrap widgets tbnavbar is invalid make ) 
Я пытаюсь использовать Расширение Bootstrap с Yii, но я продолжаю получать Ошибка, упомянутая в заголовке, я дважды проверил мой файл конфигурации, но я не ...

0  Почему мой счет на массиве хранится в переменной сессии удваивает?  ( Why does my array count stored in a session variable doubles ) 
У меня есть таблица, которая содержит следующие столбцы .. И я сохранил данные этой таблицы в переменную сеанса <код> $sql = "SELECT * from `basic_info...

31  Включение поддержки PostgreSQL в PHP на Mac OS X  ( Enabling postgresql support in php on mac os x ) 
У меня ужасно трудно получить команду «pg_connect ()», чтобы правильно работать на моем Mac. В настоящее время я пишу PHP-скрипт (для выполнения от консоли), ...

0  Вставить арабский с помощью PDO не работает  ( Insert arabic using pdo is not working ) 
Я очень глубоко укорую в этом и посмотрите много вопросов, и это не работает Каждый раз, когда я пытаюсь вставить арабский, он показывает так (?????) <Сильн...

1  Как мне позвонить сценарий Perl с моим контроллером Symfony2?  ( How do i call a perl script from my symfony2 controller ) 
Я пытаюсь реализовать автоматическую отправку в систему управления информацией из-за моего приложения Symfony2. Кто-то еще написал сценарий Perl для представл...

Связанный проблема

1  ajax () не отвечает после события keyup 
8  Есть ли лучший способ написания GIT Pre-Commit Compart Coint, чтобы проверить любой файл PHP в фиксации для ошибок разбора? 
0  Файл не загружается в Интернете (офлайн / локальные работы) 
1  PHP: профилированный код и строгая среда ~ улучшение моего кодирования 
5  Экспорт SVG в PDF в автономном TideSDK WebApp 
1  Разбор XML-документа с PHP с использованием петли «Foreach» 
1  Транзакции mysql и php 
0  Ограничение результатов Flickr API, чтобы избежать дублирования фотографий от пользователя? 
-1  PHP возвращает неправильную строку в MySQLI подготовленной статусы 
1  add_menu_page не добавляет никаких страниц в WordPress 
1  Yii с расширением загрузки, псевдоним «Bootstrap.widgets.tbnavbar» недействителен. Убедитесь, что он указывает на существующий файл PHP 
0  Почему мой счет на массиве хранится в переменной сессии удваивает? 
31  Включение поддержки PostgreSQL в PHP на Mac OS X 
0  Вставить арабский с помощью PDO не работает 
1  Как мне позвонить сценарий Perl с моим контроллером Symfony2? 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.