您的位置:首页 > 编程语言 > PHP开发

PHP学习笔记

2016-08-30 17:57 155 查看
1.php 可以动态的添加属性 例如:
$product1->time = “1994"
相应的问题也接踵而至,这样创建并设置属性会带来代码的不可控性,这种方式是不建议的。
2.方法的声明
public function myMethod{
     //…..
}
方法的调用
$product1 -> getProducer();

3.重写构造函数
function __construct($propety){
      $this->property =  $property;
}
定义了构造函数后调用时候需注意 new Product()方法时需要传入参数
4.由于PHP是弱类型语言 PHP5引入了类型提示,类型提示是运行时的
例 public function write(Product $product = null){
     
}
默认值为null
传入和上述不同类型的参数会提示错误
和OC中的方法差不多 强类型语言

5.php中没有严格的对象方法与类方法
提供两个类似OC中的关键字self ——this,super— — parent
类方法的调用 parent::getArray();
对象方法的调用 this->getArray();

6.属性三种修饰词 private protected public
与OC中类似 
本类中才类层次内可访问  子类与父类中可以访问类层次之内访问  任何地方都可以访问

7.类种支持静态属性 静态方法
并可以设置Final类、析构方法还有匿名函数
设置静态属性中 设置静态方法中  关键字为 static
注意在static修饰的方法中 要使用调用这个方法的类时候需要用self  这点和OC中不同
self在类方法中   this在对象方法中

8.声明常量属性 可用const关键字
对象不可以设置为常量 只能通过类而不能通过对象访问常量属性 并且不需要美元符号

9.抽象类 abstract 关键字  抽象类不可以直接创建对象;子类可以继承它并且通过实现其中的抽象方法
其中抽象方法也是由abstract修饰,细节可以不确定,但是子类必须得实现。

10.接口 interface 相当于OC中的protocol
实现一个接口时 例:class Product implements Charge{
}

11.static的关键字其他用处 延迟静态绑定 在一个抽象类中创建的一个抽象方法 里边要创建该类的对象这是如果你要使用
self()这样去创建的会提示错误信息 但是如果你是要用 static()创建的话没有任何错误提示
也可以调用静态方法的标识符 例  static::getGroup();     其中getGroup()为静态方法

12.PHP常用的抛出异常的方法 try{} Catch{}方法

13.final   关键字可以终止类的继承 也可以修饰方法  但不可以修饰属性 类似swift这个关键词的争议比较大

14.拦截器的使用,拦截器例如:__call(); __set(); __unset(); __get(); __isset(); 
当设置属性 unset设置一个未定义属性调用时 isset()对未定义的属性调用isset()方法
__cal()类中未定义的方法时会被调用   跟OC中的runtime有点类似

15.__destruct函数  与OC中的dealloc类似  但是里面执行的内容不一样 
__destruct函数也是在对象就被销毁的时候会调用

16.__clone()复制对象  首先要说明的是 PHP中的对象都是引用的,这样的方式可以使对象都是值复制的方式
新生成一个对象。现在类中实现这个方法,然后用clone关键字赋值。
$person2 = clone $person;
这样的方式为浅复制 ,对象还是为引用 $this->account = clone $this->account这样可以避免类中赋值属性进行引用

17.__toString()方法返回的是一个字符串值  相当于OC中的description方法 ,当print echo 这个对象的时候 
会根据__toString的方法来进行输出。

18.回调、匿名函数、闭包
调用使用与JS中类似可以说就是一样 同JS一样function (参数){}

19.use 关键字

20.namespace 命名空间
PHP支持声明嵌套的命名空间  全局空间中声明的方法不需要指定命名空间,默认的就是
在调用的时候需要在方法前面加上\表面我要使用的是全局空间中的方法

21.instaceof  类似于 OC中的 isaKndOf中的一种
该函数也是判断对象是否是属于某一个类

.=运算符  是指字符串的拼接

23.php原生嵌套JS代码
<?php
$js = <<<JS
//js code in here
JS; 
?>

24.
empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置。正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生 一些意外。原来,empty() 和 isset() 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定的区别empty还会检测变量是否为空、为零。当一个变量值为0,empty()
认为这个变量同等于空,即相当于没有设置。


比如检测 $id 变量,当 $id=0 时,用empty() 和 isset() 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty() 认为没有配置,isset() 能够取得 $id 的值:

复制代码 代码如下:

$id=0;

    empty($id)?print "It's empty .":print "It's $id .";

      //结果:It's empty .

    print "<br>";

    !isset($id)?print "It's empty .":print "It's $id .";

      //结果:It's 0 .

这意味着,我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty() 要小心,这个时候用 isset 取代它更明智一些。
当一个php页面的 URL 尾部参数出现 id=0 时(比如:test.php?id=0),试比较:

复制代码 代码如下:

if(empty($id)) $id=1; - 若 id=0 ,id 也会为1

if(!isset($id)) $id=1; - 若 id=0 ,id 不会为1

可分开运行以下代码检测上述推断:

复制代码 代码如下:

if(empty($id)) $id=1;

    print $id; // 得到 1

    if(!isset($id)) $id=1;
    print $id; //得到 0

25.php 中date的日期格式
用法: date(格式,[时间]);
如果没有时间参数,则使用当前时间. 格式是一个字符串,其中以下字符有特殊意义:

U 替换成从一个起始时间1970年1月1日以来的秒数

26.16个魔法方法
__sleep() serialize()函数调用触发
__wakeup() unserialize()函数调用触发
__set()设置私有属性
__get()获取私有属性
__isset() 属性不可访问isset()或empty()时调用
__unset() 属性不可访问调用unset()
__toString() 需要将对象转换为字符串调用
__invoke()将对象当做方法调用时
__set_state()var_export()导出时调用
__clone() clone对象时调用
__autolaod() 尝试加载一个未定义的类
__debugInfo() 打印所需调试信息 var_dump()函数调用时
__construct()构造对象时调用
__destruct() unset()对象时调用
__call() 调用查找不到的方法
__callStatic() 调用查找不到的静态方法

<?php
echo "时间格式1:".date("Y-m-d H:i:s ")."<br>";// 2010-06-12 10:26:31
echo "时间格式2:".date("y-M-D h:i:S ")."<br>";// 10-Jun-Sat 10:43:th
echo "月份,英文全名:".date("F")."<br>";// June
echo "月份,二位数字,补零:".date("m")."<br>";//  06
echo "月份,二位数字,不补零:".date("n")."<br>";//  6
echo "月份,三个英文:".date("M")."<br>";// Jun
echo "星期几,英文全名:".date("l")."<br>";// Saturday
echo "星期几,三个英文:".date("D")."<br>";// Sat
echo "星期几,数字型:".date("w")."<br>";// 6
?>


Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"
F - 月份,英文全名; 如: "January"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
t - 指定月份的天数; 如: "28" 至 "31"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
h - 12 小时制的小时; 如: "01" 至 "12"
H - 24 小时制的小时; 如: "00" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
i - 分钟; 如: "00" 至 "59"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
U - 总秒数
D - 星期几,三个英文字母; 如: "Fri"
l - 星期几,英文全名; 如: "Friday"
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP