Модификаторы доступа влияют на отражение также?

Пожалуйста! пожалуйста! пожалуйста! НЕ сериализуйте данные и поместите их в свою базу данных. Сериализация может использоваться таким образом, но в этом отсутствует точка реляционной базы данных и типы данных, присущие вашему движку базы данных. Это делает данные в вашей базе данных не переносимыми, трудночитаемыми и может усложнять запросы. Если вы хотите, чтобы ваше приложение было переносимым на другие языки, например, скажем, вы обнаружите, что хотите использовать Java для некоторой части вашего приложения, что имеет смысл использовать Java, сериализация станет болью в ягодицах. Вы всегда должны иметь возможность запрашивать и изменять данные в базе данных без использования стороннего посреднического инструмента для манипуляции данными, которые необходимо вставить.

очень сложно поддерживать код, код с проблемами переносимости и данные, которые сложнее переносить на другие системы RDMS, новую схему и т. д. Это также имеет дополнительный недостаток: найдите свою базу данных на основе одного из полей, которые вы сериализовали.

Это не значит, что serialize () бесполезно. Это не так ... Хорошим местом для использования может быть файл кеша, который, например, содержит результат операции с интенсивным использованием данных. Есть много других ... Просто не злоупотребляйте сериализацией, потому что следующий парень, который приходит, будет иметь кошмар для поддержания или миграции.

Хороший пример searilize () и unsearilize () может быть следующим:

$posts = base64_encode(serialize($_POST));
header("Location: $_SERVER[REQUEST_URI]?x=$posts");

Неисследовать на странице

if($_GET['x']) {
   // unpack searilized and ecoded URL
   $_POST = unserialize(base64_decode($_GET['x']));
}
6
задан juan 18 September 2008 в 19:22
поделиться

4 ответа

Да можно получить доступ к частным полям через отражение. Это - то, как много ORMs идет о заполнении объекта, не проходя Ваши свойства (который вызовет бизнес-логику, Вы, возможно, не намеревались быть выполненными на объектной загрузке).

Модификаторы доступа не являются формой безопасности!

5
ответ дан 10 December 2019 в 00:46
поделиться

Вам действительно, однако, нужны дополнительные полномочия для доступа к частным/защищать/внутренним полям/свойствам/методам снаружи класса посредством отражения.

3
ответ дан 10 December 2019 в 00:46
поделиться

Да Вы можете, Вы просто указываете модификатор доступа в BindingFlags при доступе к ним.

2
ответ дан 10 December 2019 в 00:46
поделиться

Да Вы можете: но Вы действительно должны вопросы сами, почему Вы идете в :)

Существует на самом деле только один случай, где он может иметь смысл, и это - UnitTest.

0
ответ дан 10 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: