PHP 如何获取方法的可见性

1514582970 发布于 2016/09/18 11:07
阅读 177
收藏 0
PHP

如下代码  想要实现 可见性为public 的方法不能在类内使用

/**
     * @author dongasai
     */
    class newPHPClass
    {
        /**
         * 可见性为共有 为该类的对外接口
         * 原则上不能在类内使用 : $this->a();  是不符合规矩的!!!!
         *
         *
         */
        public function a()
        {
            echo "a";
            $this->b(); //符合规矩
            $this->c(); //符合规矩
        }
        private function b()
        {
            echo "b";
            $this->a(); //不和规矩!!!!!
        }
        protected function c()
        {
            $this->b(); //符合
        }
        //put your code here
    }



以下是问题补充:

@1514582970:问题关键是在类 内部 内部 内部 如何防止其调用 可见性为public 的方法 (2016/09/18 23:05)
加载中
0
leo108
leo108
ReflectionMethod的IS_PUBLIC常量
1514582970
1514582970
看了下这个东西的手册说明 问了下朋友,这个东西貌似不能实现上述的东西 看问题补充
0
geminiblue
geminiblue

用反射

$class = new ReflectionClass('newPHPClass');
$instance  = $class->newInstanceArgs($args)
$properties = $class->getProperties();
会得到
               ReflectionProperty::IS_STATIC
               ReflectionProperty::IS_PUBLIC
               ReflectionProperty::IS_PROTECTED
               ReflectionProperty::IS_PRIVATE
枚举,然后自己做判断,
然后用$instance->b();这种去执行



1514582970
1514582970
我已经认为你这个东西不能实现我的需求 ,我的这个设计是为了代码分享或者转交别人之后,下一个开发者在类内错误的调用来了,本不应该在类内调用的方法!
1514582970
1514582970
我在类内反射,实例化它自己?我先研究研究楼上说的是个什么玩意吧!感觉你这个不能实现我的需求
返回顶部
顶部