php中访问控制的使用方法-创新互联

这篇文章运用简单易懂的例子给大家介绍php中访问控制的使用方法,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

锦屏网站建设公司创新互联,锦屏网站设计制作,有大型网站制作公司丰富经验。已为锦屏上千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的锦屏做网站的公司定做!

1. 属性的访问控制

php中,类的属性必须被定义为公有(public),受保护(protected),私有(private)三个中的一个。PHP4中可以用var关键词定义属性,默认未公有。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。

对var关键词感兴趣的可以看一下http://stackoverflow.com/ques...

class Foo()
{
    $name = "hello world" # 这么写是错误的。属性必须定义访问控制
}

2. 方法的访问控制

同样,类中的方法也可以被定义为公有(public),受保护(protected),私有(private)三个中的一个。但是如果是公有,方法前的关键词public可以不写。即不写关键次,默认为公有。

例如:

class Bar()
{
    function hello() # 此时该方法默认为公有
    {
        print("hello");
    }
}

那么如果把类中的构造函数私有话了会发生什么?例如:

class Demo()
{
    private function __construct()
    {
        print("I'm a private construct function");
    }
}

很显然,我们就不能直接用new Demo()来创建实例了,因为创建实例的时候会在外部调用__construct()方法。怎么办?我们或许可以在类里写一个静态方法来获取实例对象。这样就即是在本类中调用__construct()方法,也不用在外部实例化,简直完美!

class Demo()
{
    private function __construct()
    {
        print("I'm a private construct function");
    }
    
    public static function getInstance()
    {
    
        return new Demo();#这是Demo类内部,可以用new Demo()实例化调用私有的__construct()方法
    }
}
#在类外面,我们就可以这么玩了
Demo::getInstance();

但是话又说回来,我们先把__construct私有化,又千方百计用静态方法获取到实例。这是折腾什么鬼?

其实在在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。

如果我们需要在全局中只有一个唯一的对象,上面的代码还不够。因为只要有人调用了两次getInstance(),那么就生成了两个了。所以我们再把上面的代码改一下

class Demo()
{
    private function __construct()
    {
        print("I'm a private construct function");
    }
    # 先定义一个空成员装对象
    public $_object = null;
    public static function getInstance()
    {
        if(empty(self::$_object))
        {        
            # 如果没有创建过,那么就new一个
            return new Demo();
        }
        #否则(即以及创建过),我们只要放回已经存在的那个即可
        return $_object
    }
}

关于php中访问控制的使用方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:php中访问控制的使用方法-创新互联
分享路径:http://pwwzsj.com/article/dscphj.html