1.类声明与类的实例化:
实例
<?php /** * 类的声明与实例化 * 1. 类声明: class; * 2. 类的实例化: new * 3. 对象成员的访问:-> */ //用关键字class声明一个类 class zuoye1{ } //用关键字 new 实例化一个类 $zuoye1 = new zuoye1(); //给当前对象添加一些属性和方法 $zuoye1->name = '小喳喳'; $zuoye1->sex = '女'; $zuoye1->hello = function (){ return'这是一个类'; }; //使用对象访问符:-> 来访问对象中的成员 echo $zuoye1->name,'是',$zuoye1->sex,'生','<br>'; //正确调用方式 echo call_user_func($zuoye1->hello),'<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
2.类常量与类属性的重载:
实例
<?php class zuoye2{ //类常量:所有对象共享,用类名加范围解析符(::)访问,且默认为公共属性public //类常量可用来创建对象之间的共享数据 const FULLNAME = '大渣渣'; //声明三个私有属性 private $name; private $course; private $grade; //构造方法 public function __construct($name,$course,$grade) { $this->name = $name; $this->course = $course; $this->grade = $grade; } //输出属性内容 public function show(){ return $this->name.'的'.$this->course.'课程的成绩是:'.$this->grade.'分'; } //获取属性的重载 public function __get($name) { if ($name == 'grade'){ return $name.'不允许查看'; } return $this->$name; } //更新属性的重载 public function __set($name,$value) { if ($name == 'grade'){ echo $name.'不允许修改'; } $this->$name = $value; } public function __isset($name) { if ($name == 'grade'){ return false; } return isset($this->$name); } // public function __unset($name) // { // if ($name == 'grade' || $name == 'name'){ // return false; // } // unset($this->$name); // } } //访问类常量 echo zuoye2::FULLNAME,'<br>'; //实例化Demo3,创建对象 $zuoye2 = new zuoye2('喳喳','CORLDRAW','88'); echo '<pre>'; var_dump($zuoye2); echo '<br>'; //访问属性, echo $zuoye2->show(); echo '<hr>'; //获取 echo '姓名: ', $zuoye2->name, '<br>'; //设置 $zuoye2->course = 'AI'; echo '课程: ', $zuoye2->course,'<br>'; //检测,因为grade私有,所以外部检测不到,如类中有__isset()方法就可以检测到 echo isset($zuoye2->name) ? '存在<br>' : '<span style="color:red">不存在</span><br>'; echo isset($zuoye2->grade) ? '存在<br>' : '<span style="color:red">不存在</span><br>'; //销毁 //unset($zuoye2->course);
运行实例 »
点击 "运行实例" 按钮查看在线实例
3.类的继承与方法重写:
实例
<?php //类的继承与方法重写; class zuoye3{ //父类属性 public $name; protected $age; private $salary; const APP_NAME = '大渣渣'; //父类构造器 public function __construct($name,$age) { $this->name = $name; $this->age = $age; } //属性访问重载 public function __get($name) { if (isset($this->$name)){ return $this->$name; } return '非法属性'; } } class zuoye3_1 extends zuoye3{ //子类自有属性 private $sex; const APP_NAME = '小喳喳'; //子类将父类同名方法进行重写 public function __construct($name,$age,$sex) { parent::__construct($name,$age); $this->sex = $sex; } //重载 public function __get($name) { if (isset($this->$name)){ return $this->$name; } return '非法属性'; } } //当前类Demo4_1中即使没有任何成员,一样可以访问父类成员 $zuoye3_1 = new zuoye3_1('喳喳','19','female'); //访问父类中的属性 echo $zuoye3_1->age,'<br>'; echo $zuoye3_1->sex,'<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
4.类中静态成员的声明与访问:
实例
<?php class zuoye4{ public static $pdo = null; //数据库变量 protected static $db = [ 'type' => 'mysql', 'host' => 'localhost', 'dbname' => 'php', 'user' => 'root', 'pass' => 'root', ]; public static function connect(){ $dsn = self::$db['type'].':host='.self::$db['host'].';dbname='.self::$db['dbname']; self::$pdo = new PDO($dsn,self::$db['user'],self::$db['pass']); } public static function select($table,$fields='*',$num){ $stmt = self::$pdo->prepare("SELECT {$fields} FROM {$table} LIMIT {$num}"); $stmt->execute(); return $stmt->fetchall(PDO::FETCH_ASSOC); } } //连接数据库 zuoye4::connect(); //查询数据表 $result = zuoye4::select('staff','name,age,salary','6'); echo '<pre>',var_dump($result);
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:类的基本使用,链接数据库比较好用