Introduction to php access control
Introduction to PHP access control
1. Attribute access control
In PHP, class attributes must be defined as public ( One of three: public, protected, or private. In PHP4, you can use the var keyword to define attributes, which are not public by default. 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.
If you are interested in the var keyword, you can take a look at http://stackoverflow.com/ques...
class Foo() { $name = "hello world" # 这么写是错误的。属性必须定义访问控制 }
2. Method access control
Similarly, methods in a class can also be defined as one of three: public, protected, or private. But if it is public, the keyword public before the method does not need to be written. That is, if you do not write the key times, the default is public.
For example:
class Bar() { function hello() # 此时该方法默认为公有 { print("hello"); } }
So what will happen if the constructor in the class is made private? For example:
class Demo() { private function __construct() { print("I'm a private construct function"); } }
Obviously, we cannot directly use new Demo() to create an instance, because the __construct() method will be called externally when creating an instance. what to do? We may be able to write a static method in the class to obtain the instance object. In this way, you can call the __construct() method in this class without instantiating it externally, which is perfect!
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();
But then again, we first privatize __construct, and then try our best to obtain the instance using static methods. What the hell is this?
In fact, this method is often used in design patterns to control the creation of objects. For example, the singleton pattern only allows one globally unique object.
If we need to have only one unique object globally, the above code is not enough. Because as long as someone calls getInstance() twice, then two are generated. So let’s change the above code again
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 } }
The above is the detailed content of Introduction to php access control. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.
