search
HomeBackend DevelopmentPHP TutorialPHP面向对象学习笔记之一 基础概念_PHP

1> if( "false" ) 等效于 if( true), 因为非空字符串是true
2> 检查数据类型:
is_array();
is_object();
is_string();
is_null();
is_integer();
3> PHP5 引入类的类型提示(type hint),用来约束一个方法的参数类型(不是基本数据类型,而是类):将类名放在需要约束的方法参数之前.
例如: function write( ShopProduct $shopProduct){}

4> instanceof 操作符: 如果左边操作数的对象是右边操作数所示的类型,结果为true
例如: if( $shopProduct instanceof BookProduct ) {}

5> 继承 class son extends parent{}
要调用父类的方法, 比如构造函数,用 parent::__construct();

6> 静态方法和属性
class StaticExample{
static public $a;
static public function hello(){}
}
外部访问使用::
例如: print StaticExample::$a;
内部访问使用self::
例如: self::$a;

7> 抽象类, 抽象方法
abstract class xxx{
...
abstract function write(); //没有{}
}

抽象类的子类要重新声明方法并实现之. 新实现的方法的访问控制不能比抽象方法的访问控制更严格.

8>接口 interface
只定义功能,不包含实现. 接口中可以包含属性和方法声明,但方法体为空;
例如: interface a{
public function b();
}
任何实现接口的类都要实现接口中定义的所有方法,否则就必须是抽象类.
类在声明中使用implements来实现某个接口.
class Shop implements a{
public function b(){
...
}
}

9> 异常 exception
PHP5引入异常类

10>拦截器 interceptor
__get($property); 访问未定义的属性时被调用
__set($property,$value); 给未定义的属性赋值时被调用
__isset($property); 对未定义的属性使用isset()时被调用;
__unset($property);对未定义的属性调用unset()时被调用;
__call($method, $arg_array); 调用未定义的方法时候被调用
例: __get()的实现
复制代码 代码如下:
function __get($property){
$method="get{$property}";
if(method_exists($this,$method)){
return $this->$method();
}
}

function getName(){ return "Bob";}

function __isset($property){
$method="get{$porperty}";
return(method_exists($this, $method));
}

function __set($property, $value){
$method="set{$property}";
if( method_exists($this,$method)){
return $this->$method($value);
}
}


11> 析构方法 __destruct()

12> __clone(); 与clone关键字的区别
class CopyMe();
$first= new CopyMe();
$second=$first;
// PHP4 : $first和$second是两个完全不同的对象;
// PHP5: $first和$second指向同一个对象
PHP5中, 对象的赋值和传递都是引用.
如果要拷贝,就要用: $second= clone $first; //现在$first和$second是两个完全不同的对象,(by_value copy)
如果要想控制复制, 要通过实现一个特殊方法__clone()

13> 自动加载: __autoload()
PHP5引入__autoload()拦截器方法来自动包含类文件.当PHP遇到试图实例化一个未知类的操作时,会尝试调用__autoload()方法,并将类名当作字符串参数传递给它.
例如一个很简单的自动定位和包含策略:
function __autoload( $classname){
includ_once "$classname.php";
}

====================
14>使用字符串动态引用类
复制代码 代码如下:
$classname="Task";
require_once("tasks/{$classname}.php);
$myObj= new $classname();
$method="getTitle";
$myObj->$method(); //动态方法

15>类函数和对象函数
复制代码 代码如下:
class_exist(); //检查类是否存在
get_declared_classes(); //获得当前脚本进程中定义的所有类(array形式返回)
get_class_methods();//类中所有的public方法列表(array)
method_exist($objname,$method); //对象或类的方法是否存在
is_callable();//对象或类的方法不仅存在,且能访问
get_class_vars(); // 属性
get_parent_class(类或对象名称); //父类
is_subclass_of(); //是否子类,不管接口,接口用 instanceof操作符

16>反射API
由一系列可以分析属性、方法、类和参数的内置类构成,可以动态获取信息,动态调用方法.

Statement
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
深入解读PHP面向对象的封装性深入解读PHP面向对象的封装性Aug 11, 2023 am 11:00 AM

深入解读PHP面向对象的封装性封装是面向对象编程的三大特征之一,它是指将数据和对数据的操作封装在一个类中,对外部程序隐藏具体的实现细节,提供对外的接口。在PHP中,通过使用访问修饰符(public、protected、private)来控制属性和方法的可访问性,实现封装的概念。首先,我们来了解一下访问修饰符的作用:public(公开的):公开的属性和方法可以

如何通过PHP面向对象简单工厂模式实现对象的版本控制和管理如何通过PHP面向对象简单工厂模式实现对象的版本控制和管理Sep 06, 2023 pm 02:39 PM

如何通过PHP面向对象简单工厂模式实现对象的版本控制和管理在开发大型的、复杂的PHP项目时,版本控制和管理是非常重要的一环。通过适当的设计模式,我们可以更好地管理和控制对象的创建和使用,从而提高代码的可维护性和扩展性。本文将介绍如何使用PHP面向对象简单工厂模式来实现对象的版本控制和管理。简单工厂模式是一种创建类的设计模式,它通过一个工厂类来实例化指定的对象

Golang函数基础概念详解Golang函数基础概念详解May 17, 2023 am 10:33 AM

随着现代编程语言的快速发展,Golang已经成为越来越多人的首选语言。而作为Golang语言中的基础概念之一的函数,更是为程序员们提供了强大的工具支持。本文将会详细解释Golang函数的定义、参数、返回值、作用域等基本概念,以及一些高级应用场景和技巧,帮助读者更好地理解和运用Golang函数。一、函数的定义函数是Golang中的一个基本概念,它是一段可以重复

如何使用PHP面向对象简单工厂模式创建灵活的对象实例如何使用PHP面向对象简单工厂模式创建灵活的对象实例Sep 06, 2023 pm 02:12 PM

如何使用PHP面向对象简单工厂模式创建灵活的对象实例简单工厂模式是一种常见的设计模式,它可以在不暴露对象创建逻辑的情况下创建对象实例。这种模式可以提高代码的灵活性和可维护性,特别适用于需要根据输入条件动态创建不同对象的场景。在PHP中,我们可以利用面向对象编程的特性来实现简单工厂模式。下面我们来看一个例子,假设我们需要创建一个图形计算器,能够根据用户输入的形

在PHP开发中如何掌握面向对象编程技巧在PHP开发中如何掌握面向对象编程技巧Jun 25, 2023 am 08:05 AM

随着互联网的发展,PHP逐渐成为Web开发中最受欢迎的编程语言之一。然而,跟随PHP的快速发展,面向对象编程已成为PHP开发中必备的技能之一。在本文中,我们将讨论如何在PHP开发中掌握面向对象编程技巧。理解面向对象编程的概念面向对象编程是一种编程范式,它通过使用对象(类、属性和方法)来组织代码和数据。在面向对象编程中,代码被组织成可重用的模块,从而提高程序的

Go语言基础概念解析Go语言基础概念解析Apr 08, 2024 am 08:06 AM

Go语言是一门高性能、并发编程语言,其基础概念包括:基本类型(整数、浮点数、布尔值、字符串、字符);通过var关键字声明变量,并支持类型推断;使用const关键字声明常量;提供标准的控制流语句;通过func关键字声明函数;通过import语句引入包。实战案例展示了斐波那契数列的生成,加深了对这些概念的理解。

如何通过PHP面向对象简单工厂模式实现对象的无缝切换和替换如何通过PHP面向对象简单工厂模式实现对象的无缝切换和替换Sep 06, 2023 am 08:01 AM

如何通过PHP面向对象简单工厂模式实现对象的无缝切换和替换简介:在PHP开发中,面向对象编程(Object-orientedProgramming,简称OOP)是一种十分常见的编程范式。而面向对象的设计模式可以进一步提高代码的可维护性和可扩展性。本文将重点介绍PHP中的简单工厂模式,以实现对象的无缝切换和替换。什么是简单工厂模式?简单工厂模式(Simple

PHP入门到高级 -- 学习基础语法和概念PHP入门到高级 -- 学习基础语法和概念Sep 09, 2023 am 10:01 AM

PHP入门到高级--学习基础语法和概念引言:PHP(HypertextPreprocessor)是一种流行的服务器端脚本语言,广泛应用于Web开发。在本文中,我们将从入门级别开始,逐步深入学习PHP的基础语法和概念,并提供代码示例供大家参考。一、PHP的安装与配置在开始学习PHP之前,首先需要在你的机器上安装PHP。你可以从官方网站(https://w

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.