У меня есть функция, которая должна принимать либо массив, или строку и другую строку. Другие типы операндов должны быть отклонены.
Как я могу это сделать?
Вы можете определить свою функцию так, чтобы она принимала только массивы или строки, и если она найдет другой операнд, она автоматически выйдет из функции php.
Ниже приведен только PHP-скрипт, который вы можете идентифицировать вручную в вашей функции PHP.
Пример функции PHP:
function testStringAndArray($arg) {
if(is_array($arg)|| is_string($arg)) {
//Do Processing
} else {
return false;
}
}
Вы можете использовать функцию is_array () в php, чтобы проверить, указана ли данная опция в массиве или строке.
Если у вас уже есть какой-либо код, вы можете задать вопрос.
Как я понял из требования, ваша функция должна выглядеть примерно так:
function($arrayOrString, $string){
if((is_array($arrayOrString) || is_string($arrayOrString)) && is_string($string)){
// do something here
}else{
return false;
}
}
Прикрепленный, функциональный образец с «No param», строковым параметром и параметром массива.
<?php
class Speaker {
public function sayHello($person = null)
{
// I will display hello something base on parameter type.
$this->render(
$this->prepareParams($person);
);
}
private function prepareParams($param = null) {
//Default value
if(is_null($param)) {
$param = 'World';
}
else if(is_array($param)) {
//Merge all item to one string with coma separator
$param = implode(', ', $param);
}
return $param;
}
private function render(string $target) {
echo "Hello ".$target;
}
}
$tester = new Speaker();
$this->sayHello();
$this->sayHello('Yanis');
$this->sayHello(['Yanis', 'thomas','roman']);
Вы можете использовать параметр по умолчанию для управления вторым необязательным параметром, таким как:
if(!is_null($mySecondParameter)) // I can use it Because he is defined.
Ладно, я просто подумал, что слишком сложно.
Я хотел что-то вроде
public myFunction(array $arg1) {
...
}
public myFunction(string $arg1, string $arg2) extends myFunction {
...
}
Но это намного проще с чем-то вроде
public myFunction($arg1, $arg2 = null) {
if(is_array($arg1)) {
...
}
if(is_string($arg1) && is_string($arg2)) {
...
}