Нативная сериализация в десятки раз быстрее, чем json. Кстати, json не хранит информации о классе сериализованного объекта.
Данная книга не подходит новичку в программировании, автор ведет расчет на людей которые уже практикуют и имеют базовые понятия
1) Учитывая, с какой скоростью работает JSON, вот честно, вообще пофигу, займет дессериализация 0.0000001 секунды или 0.000001 секунды. 2) В подавляющем большинстве случаев сериализация преследует лишь одну цель - упаковать абстрактную структуру данных, типа массива, в строку, чтобы можно было хранить "как есть". Хранение именно объектов с сохранением класса между сессиями - это уже экзотика. Мне такой механизм пригодился всего в одном-единственном кейсе, в десктопной разработке писалась софтина для генерации карт растровых шрифтов для игрового движка. И там я прям честно паковал и писал в файл объект. А потом распаковывал обратно. Но и то, это была вкрай специфичная тема, завязанная на особенность логики движка, для которого это предназначалось. На деле даже там можно было тупо структуру хранить, без спецификации по классу.
PHP: <!DOCTYPE html> <html lang="ru"> <head> <title>Пример функции и ее использования</title> <meta charset='utf-8'> </head> <body> <?php // Функция принимает ассоциативный массив и создает несколько // тэгов <option value="$key">$value, где $key - очередной // ключ массива, а $value - очередное значение. Если задан // также и второй параметр, то у соответствующего тэга option // проставляется атрибут selected. function selectItems($items, $selected = 0) { $text = ""; foreach ($items as $k => $v) { if ($k === $selected) $ch = " selected"; else $ch = ""; $text .= "<option$ch value='$k'>$v</option>\n"; } return $text; } // Предположим, у нас есть массив имен и фамилий. $names = [ "Weaving" => "Hugo", "Goddard" => "Paul", "Taylor" => "Robert", ]; // Если был выбран элемент, вывести информацию. if (isset($_REQUEST['surname'])) { $name = $names[$_REQUEST['surname']]; echo "Вы выбрали: {$_REQUEST['surname']}, {$name} "; } ?> <!-- Форма для выбора имени человека. --> <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST"> Выберите имя: <select name="surname"> <?=selectItems($names, $_REQUEST['surname'])?> </select><br /> <input type="submit" value="Узнать фамилию"> </form> </body> </html> непонятно PHP: function selectItems($items, $selected = 0) { $text = ""; foreach ($items as $k => $v) { if ($k === $selected) $ch = " selected"; else $ch = ""; $text .= "<option$ch value='$k'>$v</option>\n"; } return $text; }
PHP: <?php ## Передача параметров по ссылке. function increment(&$a) // $a - ссылочная { echo "Текущее значение: $a<br />"; $a++; echo "После увеличения: $a<br />"; } # ... $num = 10; echo "Начальное значение: $num<br />"; increment($num); // передача по ссылке echo "После вызова функции: $num<br />"; // 11! ?> вывелось Начальное значение: 10 Текущее значение: 10 После увеличения: 11 После вызова функции: 11
Неужели костеров не объясняет, зачем передаётся по ссылке? Как раз и передаётся, чтоб изменения значения параметра сказывались на переданной переменной. Иногда бывает полезно, хотя лучше пользоваться ограниченно.
не люблю ссылки)... где то что то меняет - а потом ищешь кто и где поменял)) как с глобальными переменными))
PHP: <?php ## Типы аргументов и возвращаемого значения function sum(int $fst, int $snd) : int { return $fst + $snd; } echo sum(2, 2); echo sum(2.5, 2.5); // Fatal Error в PHP < 7, Exception TypeError в PHP >=7 ?>
PHP: <?php error_reporting ( E_ALL ); ## Типы аргументов и возвращаемого значения function sum(int $fst, int $snd) : int { return $fst + $snd; } echo sum(2, 2); echo '<br>'; echo sum(2.5, 2.5); что то не плюется ошибками --- Добавлено --- зрз 7
хех, опять у них всё через жопу ) Не, я могу понять когда строку к числу приводят, но float / int это всё же ни разу не одинаковые вещи.
Да ладно, даже C++ себя так же поведёт. https://codepad.remoteinterview.io/EDBSDYECKX Код (Text): #include <iostream> using namespace std; void f(int a, int b) { cout << (a + b); } int main() { f(2.5, 2.5); return 0; }