Метод не определен в дочернем классе - PullRequest
1 голос
/ 17 марта 2012
<?php

abstract class file
{
    private $pid;
    private $uid;
    public function  __construct($pid,$uid)
    {
        $this->pid = $pid;
        $this->uid = $uid;
    }

    public function valid()
    {
        if($_SESSION['level']<$this->pid)
        {
            return true;
        }
        else
            return false;
    }
    public function allow()
    { 
        return "This is all right!";
    }

}
?>



    <?php
    // put your code here
    include("../file.php");
    session_start();
    class android extends file
    {
        public function __construct($pid,$uid)
        {
            parent::__construct($pid, $uid);

        }
    }

    $uid = $_SESSION['id'];
    $pa = new android(1,$uid);
    if($pa->valid())
            echo $pa->allow();
    else
            echo "<h1>No permission<h1>"

    ?>

Приведенный выше класс - это класс android, а выше - файл. Теперь, когда android расширяет (наследует) класс файла, это означает, что он имеет все методы.Но когда я пытаюсь запустить программу, она говорит неопределенную переменную android :: allow (), которую я не понимаю, потому что я определил функцию allow () в классе файла, и поэтому класс android должен также наследовать метод.Пожалуйста, помогите .. Заранее спасибо.

1 Ответ

0 голосов
/ 17 марта 2012

По http://www.php.net/manual/en/language.oop5.abstract.php,

Классы, определенные как абстрактные, не могут быть созданы

Если в вашем классе файлов нет абстрактного метода, не объявляйте его абстрактным, в противном случае не вызывайте конструктор;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...