php核心技术与最佳实践(笔记一)
1.1面向对象的型与本
类是对象的抽象组织,对象是类的具体存在。
1.1.1对象的形
<?php
class Person{
public $name;
public $gender;
public function say(){
echo $this->name,"is ",$this->gender;
}
} $student = new Person();
$student->name='Tom';
$student->gender='male';
$student->say();
1.1.2对象的本
1.1.3对象与数组
1.1.4对象与类
1.2魔术方法的应用
魔术方法是以两个下划线开头,具有特殊作用的一些方法
__construct方法就是一个标准的魔术方法,称为构造方法,定义了这个方法后,每次创建对象时都会先调用此方法,适合在使用对象之前做一些初始化工作;
如果构造函数定义了参数,则实例化对象必须传参,或者为参数定义默认值,否则会报错;
class Family{
public $people;
public $location;
public function __construct($p=null,$loc=''){
$this->people = $p;
$this->location = $loc;
}
}
new Family;
1.2.1 __set和__get方法
<?php
class Account{
private $user = 1;
private $pwd = 2;
}
$a = new Account;
echo $a->user;
以上代码会报一个不允许访问私有属性的错误
<?php
class Account{
private $user = 1;
private $pwd = 2; public function __set($name,$value){
echo "Setting $name to $value \r\n";
$this->$name = $value;
} public function __get($name){
if (!isset($this->$name)) {
$this->$name='default value';
}else{
return $this->$name;
}
}
}
$a = new Account;
echo $a->user;
$a->user = 'haha';
echo $a->user;
增加__set和__get方法后代码能运行,php将这两个方法归类为重载,php的重载值动态的创建类的属性和方法。
这两个方法在访问的属性不存在时会调用,如果属性存在,是不调用的。
1.2.2 __call和__callStatic方法
如何防止调用不存在的方法而出错?使用__call魔术方法重载;
mixed __call(string $name,array $arguments)
当调用一个不可访问的方法时,__call方法会被调用。其中$name参数是要调用的方法名,$arguments参数是一个数组,包含着要传递给方法的参数,
php核心技术与最佳实践(笔记一)的更多相关文章
- PHP核心技术与最佳实践--笔记
<?php error_reporting(E_ALL); /* php 5.3引入 延迟静态绑定 */ /* php5.4引入trait,用来实现多层继承 trait Hello{} trai ...
- PHP核心技术与最佳实践——全局浏览
难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...
- 温习《PHP 核心技术与最佳实践》这本书
再次看这本书,顺手提炼了一下大致目录,以便后续看见目录就知道大概讲的些什么内容 PHP 核心技术与最佳实践 1.面向对象思想的核心概念 1.1 面向对象的『形』与『本』 1.2 魔术方法的应用 1.2 ...
- web前端开发最佳实践笔记
一.文章开篇 由于最近也比较忙,一方面是忙着公司的事情,另外一方面也是忙着看书和学习,所以没有时间来和大家一起分享知识,现在好了,终于回归博客园的大家庭了,今天我打算来分享一下关于<web前端开 ...
- 【大数据和云计算技术社区】分库分表技术演进&最佳实践笔记
1.需求背景 移动互联网时代,海量的用户每天产生海量的数量,这些海量数据远不是一张表能Hold住的.比如 用户表:支付宝8亿,微信10亿.CITIC对公140万,对私8700万. 订单表:美团每天几千 ...
- Mysql索引最佳实践笔记0524
#mysql5.7 innodb默认存储引擎 一.关于索引二.最佳实践三.避坑实践 一.关于索引 1.索引的作用 -提高查询效率 -数据分组.排序 -避免回表查询 -优化聚集查询 -用于多表join关 ...
- 《深入理解Java 7核心技术与最佳实践》读书笔记(2) Java语言动态性引言
Java语言是一种静态类型的编程语言.静态类型的含义是指在编译时进行类型检查.Java源代码中的每个变量的类型都要显式地进行声明.所有变量.方法的参数和方法返回值的类型在程序运行之前就必须是已知的.J ...
- 《Java核心技术与最佳实践》读书笔记
第一章 Java7新语法 1.switch中使用字符串 2.增加二进制表示0b10101010:数字字面量允许直径使用下划线12_34_90 3.一个catch字句捕获多个异常,多个异常之间用|分隔 ...
- 《深入理解Java7核心技术与最佳实践》读书笔记(1.1)---Project Coin介绍
OpenJDK中的Coin项目(Project Coin)的目的就是为了收集对Java语言的语法进行增强的建议.在Coin项目开始之初,曾经广泛地向社区征求提议.在短短的一个月时间内就收到将近70条提 ...
随机推荐
- Two kinds of item classification model architecture
Introduction: Introduction to Fusing-Probability model: Cause the input has two parts, one is item i ...
- Layout-3相关代码:3列布局代码演化[二]
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 前三次OO作业小结
I used to be enamored of object-oriented programming. I'm now finding myself leaning toward believin ...
- Spring事务@Transactional标签深入学习
事务管理是应用系统开发中必不可少的一部分.Spring为事务管理提供了丰富的功能支持.Spring事务管理分为编码式和声明式 两种方式.编码式事务指的是通过编码方式实现事务;声明式事务基于AOP,将具 ...
- DLC 数制与数制的转换
进位计数值:用进位的方法进行计数 常用数值有十进制.二进制.八进制.十六进制等. 进位计数制把包括基数与权两个基本问题.
- mongo 高级操作
聚合 aggregate 聚合(aggregate)主要用于计算数据,类似sql中的sum().avg() 语法 db.集合名称.aggregate([{管道:{表达式}}]) 管道 管道在Unix和 ...
- 使用css让动态容器按固定宽高比显示
需求:页面上有一个div的宽度是随着屏幕宽度的改变而改变的,但其宽高比始终是2:1,也就是当宽度是1000px时,高度为500px 分析:无论浏览器窗口如何改变,始终要让目标元素的宽高比保持2:1,我 ...
- [HTML]音乐自动播放(兼容微信)
文件下载:音乐自动播放(兼容微信).zip <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...
- The type initializer for System.Data.SqlClient.SqlConnection threw an exception
The type initializer for System.Data.SqlClient.SqlConnection threw an exception net framwork啥原因 xp电脑
- MATLAB 出一张好看的图
1.坐标轴的视点(viewpoint):从哪个方向看整个坐标系统,这决定了坐标轴的方向和位置,通过view函数实现视点的设置:view([z y ]):(将坐标系统想象为一座房子,而自己是个会飞的天使 ...