面向对象
// 父类
class Animal {
// 成员变量
var $name;
var $age;
// 构造函数
function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
function getAge() {
return $this->age;
}
function getName() {
echo $this->name;
}
function setName($name) {
$this->name = $name;
}
function setAge($age) {
$this->age = $age;
}
// 方法
function sayHello() {
echo $this->name."say Hello";
}
// 析构函数(当对象结束其生命周期时,系统自动执行析构函数)
function __destruct() {
echo "销毁" .$this->name;
}
}
// 子类
class Dog extends Animal {
var $color;
function __construct($name, $age, $color){
parent::__construct($name, $age);
$this->color = $color;
}
function setCate($color){
$this->color = $color;
}
function getCate(){
echo $this->color . PHP_EOL;
}
// 方法重写
function sayHello(){
echo $this->age.$this->name."say Hello";
}
}
$animal = new animal("旺财", 12);
$animal->getName();
$dog = new Dog("招财", 13, "red");
$dog->sayHello();
访问控制
public
(公有):公有的类成员可以在任何地方被访问protected
(受保护):受保护的类成员则可以被其自身以及其子类和父类访问private
(私有):私有的类成员则只能被其定义所在的类访问
接口
// 声明一个'iTemplate'接口
interface http {
public function getMethod();
public function getHeader();
}
// 实现接口
class ajax implements http {
public function getHeader() {
// 代码
}
public function getMethod() {
// 代码
}
}
abstract
(抽象)关键字
- 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的
- 定义为抽象的类不能被实例化
- 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现
- 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;
- 另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的
- 子类方法可以包含父类抽象方法中不存在的可选参数
Static
(静态) 关键字
-
声明类属性或方法为 static(静态),就可以不实例化类而直接访问
-
静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)
-
由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用
class Foo { public static $my_static = 'foo'; public function staticValue() { // 内部:调用静态属性 return self::$my_static; } } // 外部:直接通过类调用静态属性 print Foo::$my_static . PHP_EOL; $foo = new Foo(); // 外部:通过类的实例化对象调用静态方法 print $foo->staticValue() . PHP_EOL;
Final
(最终)关键字
- 如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承
表单
<form action="form.php" method="post">
<!-- 文本框 -->
<input type="text" name="name">
<input type="text" name="age">
<!-- 单选下拉框 -->
<select name="city">
<option value="">选择一个城市:</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="天津">天津</option>
</select>
<!-- 多选下拉框 -->
<select multiple="multiple" name="citys[]">
<option value="">选择一个城市:</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="天津">天津</option>
</select>
<!-- 单选按钮 -->
<input type="radio" name="q" value="北京" />北京
<input type="radio" name="q" value="上海" />上海
<input type="radio" name="q" value="天津" />天津
<!-- 复选框 -->
<input type="radio" name="a[]" value="北京" />北京
<input type="radio" name="a[]" value="上海" />上海
<input type="radio" name="a[]" value="天津" />天津
<input type="submit" value="提交">
</form>
// 获取表单字段值
$_POST["name"];
$_POST["age"];
$_POST["city"];
$citys = $_POST['citys'];
if(is_array($citys)) {
foreach ($citys as $val) {
echo $val;
}
}
$_POST["q"];
a = $_POST['a'];
if(is_array($a)) {
foreach ($a as $val) {
echo $val;
}
}