批改状态:合格
老师批语:
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);点击 "运行实例" 按钮查看在线实例

总结:类的基本使用,链接数据库比较好用
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号