如何检查其他对象中的对象类

时间:2018-05-18 09:10:58

标签: php

我只是在学习OOP Php,我理解OOP编程的基本原理,并尝试做练习。我想做一个简单的消息传递应用程序,用户可以互相发送消息。像电子邮件,但在一个封闭的系统。

我的想法是当用户登录时,我创建一个包含用户可以执行的功能的用户对象,如果管理员登录,我创建了一个管理对象,该对象扩展了添加了管理功能的用户类。

我的问题是我是否可以在其他类中检查对象是管理员还是用户类,而无需在类中注入或在检查类中创建对象。像这样:

  class Checker{
      // some variables
      public function isAdmin($object ){
                if($object istanceof Admin){
                    return 1;
                 } else{
                    return 0;
                 }
           }
      }

1 个答案:

答案 0 :(得分:0)

IMO使用反射和内省进行非调试目的是一种反实践。 PHP 5 Reflection API performance

这样做:

class User implements SystemUserInterface
{
    public function isAdmin()
    {
        return false;
    }
}

class Admin extends User
{
    public function isAdmin()
    {
         return true;
    }
    // other stuff that only admin can do..
}

function checkUser($user)
{
   echo "You have created ".($user->isAdmin()? "admin":"regular")." user";
}