1.类与对象
class:每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义。
简单类的定义
<?php
class SimpleClass
{
// 声明属性
public $var = 'a default value';
// 声明方法
public function displayVar() {
echo $this->var;
}
}
?>
2.基础语法
<?php
class name{
public $s1 = 0;
public $s2 = 1;
public function s1(){
echo "s1";
}
public function s2(){
echo "s2";
}
}
$name = new name();//根据name类实例化对象,需使用关键字new
echo $name->s2;//输出类的$s2属性
$name->s1();//调用类的s1方法
//输出1 s1
/* 比较变量和函数的调用
$a1 = 1;
echo $a1;
function a1(){
echo "a1";
}
a1();
*/
?>
第二种代码
<?php
class name{
public $s1 = 0;
public $s2 = 1;
public function __construct($a,$b){
$this->s1 $a;//#$this是一个伪变量,可以在类中引用类里面的方法的时候时候,而在类外去引用一个类的方法,需要先实例化为对象才能引用。
$this->s2 $b;
}
public function s1(){
$this->s2();
}
public function s1(){
$this->s1;
}
}
$name = new name('a','b');//调用类里面的方法
$name->s1();//调用类里面的变量不需要$
?>
3.魔方法术
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为<q class="quote">魔术方法</q>(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。
Caution PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。
4.include包含文件
include与require可以包含外部文件,从而调用外部PHP文件的类、属性、方法等,include报错且继续运行程序,require/include一旦报错便终止运行,require_once/include_once 语句和 require语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
vars.php
<?php
$color = 'green';
$fruit = 'apple';
?>
test.php
<?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
5.对函数的进一步封装
input实例
<?php
formsave.php
include('input.php');
$content = $_POST['content'];
$user = $_POST['user'];
$input = new input();
//调用函数,检查留言内容
$is = $input-> post($content);
if($is == false){
die('留言内容的数据不正确');
}
//调用函数,检查用户名
$is = $input-> post($user);
if($is == false){
die('用户名的数据不正确');
}
//var_dump($content,$user);
input.php
class input{
//定义函数,对数据进行检查
function post($content){
if ($content == ''){
return false;
}
//禁止使用的用户名
$n = ["张三","李四","王五"];
foreach($n as $name){
if($content == $name){
return false;
}
}
return true;
}
}
?>