Home > Backend Development > PHP Tutorial > How to directly access private properties of php instance objects

How to directly access private properties of php instance objects

藏色散人
Release: 2023-04-07 19:42:01
forward
2721 people have browsed it

Before introducing the key parts, let us first review PHP object-oriented access control.

Access control of properties or methods is achieved by adding the keywords public (public), protected (protected) or private (private) in front. Class members defined as public can be accessed from anywhere. Class members defined as protected can be accessed by itself and its subclasses and parent classes. Class members defined as private can only be accessed by the class in which they are defined.

Class attributes must be defined as one of public, protected, and private. If defined with var, it is considered public.

Please see the sample code below (from the official document http://php.net/manual/en/lang...:

<?php
/**
 * Define MyClass
 */
class MyClass
{
    public $public = &#39;Public&#39;;
    protected $protected = &#39;Protected&#39;;
    private $private = &#39;Private&#39;;
    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private
Copy after login

As shown in the above code, we use a class When the instance object accesses the private or protected member properties of a class, a fatal error will be thrown.

The following is what the title of the article does, access the private properties of the PHP instance object.

According to our normal practice, we usually write a public method and then return this attribute.

public function getPrivate()
{
    return $this->private;
}
Copy after login

The fact is that we should do this.

The following It is said that it is only used in special scenarios. I hope you will not mess with it when writing code.

<?php
class A {
    private $a = &#39;self&#39;;
    public function test() {
        $other = new self();
        $other->a = &#39;other&#39;;
        var_dump($other->a);
    }
}
$aa = new A();
$aa->test();
Copy after login

As shown in the above code, we create a new A object and assign a value to the private attribute a of this instance. , no error was reported!

Explanation: Because objects of the same class can access each other's private and protected members even if they are not the same instance. This is because the internal implementation details of these objects are known.

The above is the detailed content of How to directly access private properties of php instance objects. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template