PHP学习笔记





PHP的基本语法介绍
A. php可以和html代码混合
a) 1.一般用法
<?php
//php代码
?>


2. <?php
//php代码
?>
//一部分html代码。
<?php
//php代码
?>


b) Script用法
<script language=”php”>
//php代码
</script>


c) 如果只是为了显示一个变量
<?=$变量名?>


B. PHP代码的注释
注释多行:/*xxxxx*/
注释单行://xxxxx




C. Php的基本语法加强
Parse:解析
Error:错误
Syntax:语法
1.php可以喝HTML混用
2.php的变量的定义使用
//php中,定义变量以$打头。
$a = 890;。
3.Php的变量的数据类型,是变化的。根据上下文变化。
4.变量区分大小写
5.变量的名称以字母,或者下划线开头
 


D.
1. 构造函数
1. public function __construct(){}
2. public function 类名(){}
2. 析构函数
1. Function __destrusct(){}
3. 静态变量
1. 在类中定义静态变量:
[访问修饰符] static $变量名:
2. 访问静态变量
类内:self::$变量名
      类名::$变量名
类外:类名::$变量名 
4. 静态方法
定义:static function 方法名(){}
注意,不能访问非静态成员
5. 继承
Class 类名 entends 父类名{}
1. 父类的public ,protected 的属性和方法被继承。Private的属性和方法没继承。
2. 一个类只能继承一个父类,若希望继承多个类的属性和方法,就使用多层继承。
3. 当创建子类对象时,默认情况下,不会自动调用父类的构造方法。
4. 如果希望调用父类的方法,或者其他的方法。
类名::方法名。Parent::方法名()
5. 当子类方法和父类完全一样时,则是方法的覆盖。
6. 重载
 PHP5的重载是通过魔术函数来实现方法重载的效果。
__call:当一个对象调用某个方法,而该方法不存在时,系统则会自动调用__call
例子:
<?php
class A{
public function test1($p)
{
echo "test1";
}
public function test2($p)
{
echo "test2";
}
function __call($method,$p)
{
var_dump($p);
if (count($p)==1) 
{
$this->test1($p);
}
else if(count($p)==2)
{
$this->test2($p);
}
}
}
$a = new A();
$a->test(1,2); 

?>
__call函数的第一个参数为想调用的函数名,第二个为参数个数。通过这两个,来确定想要运行的函数。比如当函数名为test且参数为一个的时候运行test1, 当函数名为test且参数为两个的时候运行test2。使用的效果,就是重载。
7. 方法覆盖
问题
当一个父类知道子类都有一个方法,但无法确定实现方法。可以让子类去覆盖。
<?php 

class Animal
{
public $name;
protected $price;


function cry()
{
echo "不知道怎么叫";
}
}

class Pig extends Animal {
function cry()
{
echo "哼哼";
}
}

class Dog extends Animal{
//覆盖
function cry(){
echo "汪汪";
}
}

$a = new Pig;
$a->cry();

?>


细节:
1. 子类的方法名和参数列表个数要和父类一样,参数名没要求。
2. 如果子类要去调用父类方法,parent::方法名或者父类名::方法名
3. 实现覆盖时候,访问修饰符可以不同,但是子类范围要大于父类


8. 抽象类
为什么需要抽象类:
实际开发中,有一种类是把其他的同一类型的类的共同点抽出来,作为他们的父类,本身不需要实例化。主要用途就是给别的类继承,以达到代码复用。比如汽车卡车抽象出来就是交通工具。
注意事项
1.基本用法:
Abstract class 类名{
Code
}


2.如果一个类的修饰符是abstract。那么这个类就是抽象类,同样,方法也是。如果是抽象方法,就不能写方法体(实现)。
3.抽象类可以没有抽象方法以及可以有实现了的方法
4.非抽象类不能有抽象方法。
5.非抽象类若继承于抽象类,则必须实现抽象类中的全部抽象方法,或者自己成为一个新的抽象类
9. 接口类
1. 接口的使用基本方法
Interface 接口名{
 code
}
接口的方法都不能有方法体。
实现接口
Class 类名 implements 接口名1,接口2{
   code
}


接口的作用就是声明一些方法,让其他的类实现。
 


不能实例化一个接口类。
接口中的属性必须是常量,并且是public
接口的方法是public,不能是其他。
类和关系,一览图。
 
一个接口可以继承多个其他的接口。
一个类实现了某个接口。必须实现其所有方法


10. Final
1. 如果我们希望某个类不被其他的类继承。可以使用final
final class A{
code
}
2. 如果我们希望某个方法不能被子类改写。可以使用final来修饰。
3. Final关键字不能修饰属性。
11. Const


Class A{
Const 常量名(不用加$) = 赋初值;
}
使用 类名::常量名


12. 综合练习
原文地址:https://www.cnblogs.com/zkkkkkky/p/4422998.html