Продолжаем разбор интересных задач. Часть 1 http://ph4n70m.blogspot.ru/2015/03/php.html
* str_replace()
* preg_replace()
* strip_markup()
Насколько я понимаю - strip_tags - для вырезания тегов. Strip_markup - это из какого-то расширения для вырезания тегов разметки
* -> для нестатичных, :: - для статичных
* -> для статичных, :: - для всех методов
* -> для всех методов, :: - для статичных
* без разницы
Пока так, прочее надо проверить. Ранее можно было их даже заменять - php ругался на то что идёт вызов к статичному методу, но работал.
* Позволяет создавать множество строк с цитированием
* Позволяет создавать строку без цитирования
* Позволяет создавать множество строк без цитирования
Heredoc (<<<EOD) - это объявление строки, с заменой переменных. Для отмены замены можно использовать nowdoc синтаксис (<<<'EOD')
$number = [0.57, '21.5', 40.52];
if (in_array(21.5, $number, true)) echo "21.5 is found!";
else echo "21.5 is not found";
* Найдено
* Не найдено
* Ничего. Скрипт не корректный
Не найдет, потому что третий параметр указывает на то, что при сравнении надо учитывать тип переменных.
abstract function bar(array $params = NULL);
}
class Moo extends Foo {
public function bar(array $params) {
echo count($params);
}
}
$c = new Moo();
$c->bar(array(5));
* 1
* 0
* 5
* Fatal error
Будет ошибка, т.к. объявления функций не совпадают
* Нельзя создать объект такого класса
* Абстрактные методы, содержащие функционал, нельзя переопределить
* Когда объявлем абстрактный класс - надо создать от него объект
$arr['one'] = 14;
echo "Event happend $arr['one'] days ago";
* $arr[one]
* {$arr['one']}
* $arr{one}
* " . $arr['one'] . "
Или в скобкам или как конкатенация строк. Подробно http://php.net/manual/en/language.types.string.php#language.types.string.parsing
$str = 123;
echo "Value of variable - \$str";
* Value of variable - \$str
* Value of variable - 123
* Value of variable - $str
Двойные кавычки и искейпим знак доллара - выводим как символ.
Как вывести строку "Hello, World!"?
<?php
function myfunction() {
?????
print $string;
}
myfunction("Hello, World!");
* list($string) = func_get_args();
* $string = $argv[1];
* $string = get_function_args();
* Никак
Т.к. это всё же скриптовый язык, то многие вещи можно получить в рантайме. $argv в то же время используется для чтения аргументов из командной строки. А функции get_function_args - в php нету.
function get_sum() {
}
* 1
* 0
* сколько угодно
Как и в предыдущей задаче - передавать можно что угодно и сколько угодно. Возможно в php7 strict mode это поведение поменяется.
Какая функция лучше всего подойдет для удаления тегов из строки?
* strip_tags()* str_replace()
* preg_replace()
* strip_markup()
Насколько я понимаю - strip_tags - для вырезания тегов. Strip_markup - это из какого-то расширения для вырезания тегов разметки
Какая разница между доступом к методу класса через -> и ::?
* -> для статичных, :: - для нестатичных* -> для нестатичных, :: - для статичных
* -> для статичных, :: - для всех методов
* -> для всех методов, :: - для статичных
* без разницы
Пока так, прочее надо проверить. Ранее можно было их даже заменять - php ругался на то что идёт вызов к статичному методу, но работал.
Зачем heredoc используется в PHP?
* Позволяет создавать строку с цитированием* Позволяет создавать множество строк с цитированием
* Позволяет создавать строку без цитирования
* Позволяет создавать множество строк без цитирования
Heredoc (<<<EOD) - это объявление строки, с заменой переменных. Для отмены замены можно использовать nowdoc синтаксис (<<<'EOD')
Что выведет данный скрипт?
<?php$number = [0.57, '21.5', 40.52];
if (in_array(21.5, $number, true)) echo "21.5 is found!";
else echo "21.5 is not found";
* Найдено
* Не найдено
* Ничего. Скрипт не корректный
Не найдет, потому что третий параметр указывает на то, что при сравнении надо учитывать тип переменных.
Что выведет скрипт?
abstract class Foo {abstract function bar(array $params = NULL);
}
class Moo extends Foo {
public function bar(array $params) {
echo count($params);
}
}
$c = new Moo();
$c->bar(array(5));
* 1
* 0
* 5
* Fatal error
Будет ошибка, т.к. объявления функций не совпадают
Какие утверждения про абстрактный класс верны?
* Методы, объвленные как абстрактные не могут включать функционал* Нельзя создать объект такого класса
* Абстрактные методы, содержащие функционал, нельзя переопределить
* Когда объявлем абстрактный класс - надо создать от него объект
Как исправить код в вызове echo?
<?php$arr['one'] = 14;
echo "Event happend $arr['one'] days ago";
* $arr[one]
* {$arr['one']}
* $arr{one}
* " . $arr['one'] . "
Или в скобкам или как конкатенация строк. Подробно http://php.net/manual/en/language.types.string.php#language.types.string.parsing
Что выведет данный скрипт?
<?php$str = 123;
echo "Value of variable - \$str";
* Value of variable - \$str
* Value of variable - 123
* Value of variable - $str
Двойные кавычки и искейпим знак доллара - выводим как символ.
Как вывести строку "Hello, World!"?
<?php
function myfunction() {
?????
print $string;
}
myfunction("Hello, World!");
* list($string) = func_get_args();
* $string = $argv[1];
* $string = get_function_args();
* Никак
Т.к. это всё же скриптовый язык, то многие вещи можно получить в рантайме. $argv в то же время используется для чтения аргументов из командной строки. А функции get_function_args - в php нету.
Сколько параметров может принять эта функция?
<?phpfunction get_sum() {
}
* 1
* 0
* сколько угодно
Как и в предыдущей задаче - передавать можно что угодно и сколько угодно. Возможно в php7 strict mode это поведение поменяется.