Как отправить атрибутов для классов расширенные?


class Veiculos
{
    protected $tipo = "carro";
}

Ниже я пытаюсь определить, какой тип транспортного средства, класс Veiculos назначили. Я создал функцию tipo_veiculo, который должен показать пользователю, какой тип автомобиля, который он выбрал, и попросить его выбрать цвет на следующем шаге.

class Veiculo extends Veiculos
{
    public function tipo_veiculo(){
        if($tipo == "carro"){
            echo "Você selecionou carro. Escolha a cor.";
        } elseif($tipo == "moto") {
            echo "Você selecionou moto. Escolha a cor.";
        } else {
            echo "Você não selecionou nenhum carro.";
        }
    }
}

Как передать атрибут $tipo класс Veículo могу использовать его? Пытался что-то написать, используя понятие наследования, чтобы я мог попытаться получить ответ.

Author: Maniero, 2016-01-05

1 answers

, Понимая, наследование

, трудно ответить на этот вопрос, потому что у нее есть концептуальная ошибка. И если не понять концепции, не правильно будет кодировать правильно.

, Когда наследует класс, класс, который породила эта передает ее частью, соединяет все. То есть, класс и дочь-это все, что класс, мама-это что-то другое. Они-не две отдельные вещи, которые могут общаться (передача), это одно и то же.

Уже неловко, класс Veiculo наследовать от класс с именем Veiculos. Я уже говорил в другой вопрос, что должны существовать причина, чтобы использовать один класс и еще больше, чтобы использовать наследование. Почти ничего не нужно наследства, наследство должно быть исключение, и даже больше фанатов ООП знают об этом сегодня.

Одна из самых важных вещей в кодировке, чтобы дать хорошие имена для вещей. Одна вещь, которая привлекает Veiculos должны иметь несколько транспортных средств в него? Этот класс имеет? Не кажется. И если это вещь, которая имеет несколько автомобилей, почему бы часть автомобиль просто? Положить несколько автомобилей в течение транспортного средства? Не имеет смысла.

, Если этот класс является частью транспортного средства, поэтому должен иметь другое имя. И если это только одна часть должна быть композиции, а не наследования (здесь также). Я просто не могу себе представить, как и наследство его будет уместны в этом случае.

Конкретной проблеме

Сказано все, что важно для тех, кто хочет научиться с этим вопросом, просто получить доступ к переменной, как правильно. В конце концов $tipo - это локальная переменная (функция), когда - $this->tipo - это переменная экземпляра класса. Ошибка отличается от описанного в вопросе.

См работает ideone. И repl.it. Также я GitHub для использования в будущем.

 6
Author: Maniero, 2020-10-09 18:26:21