class — Обработка подклассов и переменных в переполнении стека

Итак, что я хочу сделать, это иметь библиотеку классов для orderprocess, где orderprocess состоит из разных частей, таких как адрес, личная информация и т. д. Итак, мой код должен выглядеть примерно так:

$process = new orderprocess();
print $process->orderpart("address");

И тогда я хочу orderpart() функция будет немного похожа на:

public function orderpart($part){
$name = "orderprocess_" . $part;
$class = new $name();
return $class;
}

Единственная вещь, класс матери, orderprocess имеет ряд открытых и защищенных переменных, которые я хочу, чтобы подкласс наследовал или имел доступ. Таким образом, он будет иметь переменные для отслеживания состояния формы, поэтому исходный код будет выглядеть так:

$process = new orderprocess();
print $process->orderpart("address");
if ($process->status["address"] == "done"){
print $process->orderpart("personal");
}

Это означает, что родитель orderprocess класс должен отслеживать вещи в своих дочерних классах.

«Расширение» только расширяет функциональность родительского класса, а не экземпляра, насколько я знаю. Я хотел бы orderpart() функция для создания нового подкласса, который расширяет родительский класс а также наследует или может получить доступ к родительским переменным пример родительского класса.

Пожалуйста, сообщите, если вы думаете, что я поступаю об этом неправильно.

0

Решение

Просто сначала определите все ваше имя класса:

public function orderpart($part){
$classname = "orderprocess_" . $part;
return new $classname();
}
0

Другие решения

Ваша фраза довольно запутанная, но, возможно, это то, что вы ищете.

class Parent
{

protected $status;

public function __construct(){
/* Set status to whatever here */
}

public function orderpart($part)
{
return "orderprocess_" . $part;
}

public function status($part)
{
if ($this->status[$part] == "done"){
return $process->orderpart("personal");
}
return false;
}
}

class SubClass extends Parent
{
public function orderpart($string)
{
return "orderprocess_" . $part;
}
}

Тогда вы можете просто назвать это, я верю:

$SubClass->status($part);
0

По вопросам рекламы [email protected]