Исходя из этого, вы можете переосмыслить свой дизайн, чтобы вам не нужно было передавать параметры в конструкторе.Если вы не думаете, что это можно сделать, задайте это как вопрос, вы можете быть удивлены некоторыми предложениями.
Дочерний класс имеет возможность переопределить родительский конструктор, не вызывая его вообще.Я бы порекомендовал иметь последний метод в родительском классе.Таким образом, все знают, что вы не хотите, чтобы это было переопределено, и любой унаследованный класс (справедливо) имеет доступ к тому, что он хочет в конструкторе.
class Father {
private $_privateData;
final function setPrivateData($privateData) {
$this->_privateData = $privateData;
}
}
Еще один, не рекомендуется, более "изобретать колесоmsgstr ", решением было бы определить функцию в родительском классе, скажем _construct (), которая вызывается в своей собственной конструкции.Он не совсем понятен, не использует языковые функции / конструкции и очень специфичен для одного приложения.
Последнее, что нужно иметь в виду: вы не можете скрыть информацию от дочернего класса.С помощью Reflection, serialize, var_dump, var_export и всех этих других удобных API на языке php, если есть код, который ничего не должен делать с данными, то на самом деле вы ничего не можете сделать, кроме как не хранить его.Существуют библиотеки и тому подобное, которые помогают создавать песочницы, но сложно изолировать объект от самого себя.
Редактировать: Почему-то я пропустил ответ Артефакто, и я полагаю, что он прав (я никогда не пытался написать расширение длясделай это).Тем не менее, его реализация нарушает ожидания разработчиков, в то же время затрудняя фактический просмотр кода, объясняющего, что происходит.