Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
<?php
namespace _0812; ?>
// 文件包含
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--退出 html 进入php -->
<?php
// PHP代码 在服务器执行
// 退出 php 进入html
?>
<!-- 被包含的是html 直接写 -->
</body>
</html>
<?php
namespace _0812;
// 文件包含
// 本质,将外部文件的内容,插入到当前的位置
// include 加载引用
// 相对路径
include 'zuoyeinc/zuoyef1.php';
// echo $username;
echo '<hr>';
// 推荐使用绝对路径 速度更快
include 'zuoyeinc/zuoyef1.php';
echo __DIR__.'/zuoyeinc/zuoyef1.php';
// 斜线 反斜线 统一
echo '<hr>';
echo __DIR__.DIRECTORY_SEPARATOR.'zuoyeinc'.DIRECTORY_SEPARATOR.'zuoyef1.php';
echo '<hr>';
// 简写
// include __DIR__.'/zuoyeinc/zuoyef1.php';
// // 与当前脚本共用一个作用域
// echo $username;
// // $username 导入的失效了 变成小猫了
// $username = '小猫';
// echo $username;
echo '<hr>';
// @var username 声明 后不会报错
echo '<hr>';
// return 接收
// $username= include __DIR__.'/zuoyeinc/zuoyef1.php';
// echo $username;
// return 接收 数组
// list() 解构
$user =include __DIR__.'/zuoyeinc/zuoyef1.php';
list('username'=>$username,'email' => $email ) =$user ;
echo $username ,'----',$email;
echo '<hr>';
echo join(',',$user);
echo '<hr>';
vprintf('%s---%s',$user);
echo '<hr>';
$user =include __DIR__.'/zuoyeinc/zuoyef2.php';
echo $user;
// 虽然路径错了,但是不影响后面的执行 但是require 不执行了 警告错误后面执行
echo '<h1>Hello php.cn</h1>';
echo '<hr>';
// require
// $user =require __DIR__.'/zuoyeinc/zuoyef2.php';
// echo $user;
// // require 不执行了 致命错误后面不执行 直接退出了 一般require用的多
// die('程序中断');
// exit('xxxx');
// echo '<h1>Hello php.cn</h1>';
// 判断文件是否存在
if (file_exists(__DIR__ . '/inc/f12.php')) {
require __DIR__ . '/inc/f12.php';
} else {
exit('文件不存在');
}
// include, require,功能一样,区别在于出错的处理上
// include: 忽略错误,继续执行后面代码, require,直接退出
<?php
namespace _0812;
//快速话 模块化 网站
?>
<?php
include __DIR__.'/zuoyeinc/header.php';
?>
<main>
<ul>
<li><a href="">最新技术文章1</a></li>
<li><a href="">最新技术文章2</a></li>
<li><a href="">最新技术文章3</a></li>
<li><a href="">最新技术文章4</a></li>
<li><a href="">最新技术文章5</a></li>
<li><a href="">最新技术文章6</a></li>
<li><a href="">最新技术文章7</a></li>
<li><a href="">最新技术文章8</a></li>
<li><a href="">最新技术文章9</a></li>
<li><a href="">最新技术文章10</a></li>
</ul>
</main>
<?php include __DIR__ . '/zuoyeinc/footer.php';
<?php
// namespace _0812;
/**
* class: 声明类
* new: 实例化类
*/
use _0812\Goods as _0812Goods;
// 面向对象
// 对象是一个容器 是全局成员的一个前缀
// obj.name
// 类 全局成员。声明 class 大驼峰 PascalName
// 1、类声明
class Goods {
}
// 2、类实例化 实例的是对象
// 实例总是与一个类绑定, 对象更通用一些, 在不引起歧义时,实例==对象
$goods =new Goods();
var_dump( $goods);
echo '<hr>';
var_dump( $goods instanceof Goods);
echo '<hr>';
echo gettype($goods).'<br>';
echo '<hr>';
echo get_class($goods).'<br>';
echo '<hr>';
// 动态类
// 控制器 是一个动态类 控制器 名称 出现在url 中
$controller = 'goods';
// $controller = ucfirst('goods');
$obj1 = new $controller ();
var_dump($obj1);
echo '<hr>';
// 动态类
// 控制器就是一个动态类, 控制器名称出现url
$cont = ucfirst('goods');
// UserController.php
// $controller = ucfirst( 'goods') . 'Controller';
$obj = new $cont();
var_dump($obj);
<?php
// namespace _0812;
/**
* 类成员
* 1. 实例成员: 用对象访问, $this
* 2. 静态成员
*/
class User1 {
// 1.1 实例成员
// 类里面声明变量,要给声明全局、范围的限定、 不然报错
// 私有成员 、 private 只有当前类使用,其他地方不能使用
// 默认公共的 public
public $username ='小狗' ;
// 私有的 只有当前类使用
private $salary =15000;
private $age =15;
// 写个方法返回 私有的
public function getSalary (){
// $user = new User1();
// return $user ->salary;
// 简化 $this 和当前类实例绑定
return $this ->salary;
}
// 写个方法返回 私有的
public function getAge (){
// $user = new User1();
// return $user ->salary;
// 简化 $this 和当前类实例绑定
return $this ->age;
}
}
// 实例化
$user1 =new User1();
echo $user1 ->username.'<hr>';
// echo $user1 ->salary.'<hr>'; 访问不到私有变量
// 访问到了
echo $user1 ->getSalary();
echo '<hr>';
// 访问到了
echo $user1 ->getAge();
echo '<hr>';
// 简化 获取器
class User2 {
// 1.1 实例成员
// 类里面声明变量,要给声明全局、范围的限定、 不然报错
// 私有成员 、 private 只有当前类使用,其他地方不能使用
// 默认公共的 public
public $username2 ='小猫' ;
// 私有的 只有当前类使用
private $salary2 =25000;
private $age2 =25;
public $role = '妈';
// 获取器 忽略属性类型 全部返回
// $name 要获取的属性名
// 获取器: __get(属性), 魔术方法, 双下划线开始的系统方法
// $name: 要获取的属性名
public function __get($name)
{
// 类内部: $this
// return $this ->$name;
// 设置拦截
if($name ==='salary2'){
if ($this -> role==='太太'){
return $this ->$name -1;}
else {
return $this ->$name -2;
}
}
if($name ==='age2'){
return $this ->$name +1;
}
}
// 修改器/设置器, 魔术方法, __set(属性,值)
// public function __set($name, $value)
// {
// if($name ==='age2'){
// if ($value >= 18 && $value <= 50){
// $this ->$name = $value;
// }else {
// echo '年龄非法';
// }
// }
// }
// 修改器/设置器, 魔术方法, __set(属性,值)
public function __set($name, $value)
{
if ($name === 'age2') {
if ($value >= 18 && $value <= 50) {
$this->$name = $value;
} else {
echo '年龄越界了';
}
}
}
}
// 实例化
// 在类外部,用对象访问成员
// $user2 =new User2();
// echo $user2 ->username2.'<hr>';
// // echo $user1 ->salary.'<hr>'; 访问不到私有变量
// // 访问到了
// echo $user2 ->salary2;
// echo '<hr>';
// // 访问到了
// echo $user2 ->age2;
// echo '<hr>';
// 修改 年龄 类内部的值 _set()
// $user2 ->age2 = 35;
// echo $user2 ->age2;
// echo '<hr>';
// 修改 年龄 类内部的值 _set()
// $user2 ->age2 = 15;
// // echo $user2 ->age2;
// echo '<hr>';
// 修改 年龄 类内部的值 _set()
// $user2 ->age2 = 40;
// echo $user2 ->age2;
// echo '<hr>';
// 实例化
// 在类外部,用对象访问成员
$user2 = new User2();
echo $user2->username , '<br>';
// echo $user1->salary , '<br>';
echo $user2->salary2 . '<br>';
echo $user2->age2 . '<br>';
$user2->age2 = 48;
echo $user2->age2 . '<br>';
$user2->age2 =60;
// echo $user2->age2 . '<br>';
<?php
namespace _0812;
/**
* 类成员
* 1. 实例成员: 用对象访问, $this->对象引用
* 2. 静态成员 static: 用类访问, self::->类引用 私有属性
*/
class User3
{
public $username;
private $salary;
private $age;
// 当前类实例的状态(属性值)应该由用户来决定,而不是由类来写死
// 构造方法: 魔术方法, 不用用户主动调用,由某个事件或动作来触发
// __get,__set
// 构造方法, 实例化该类时,会自动触发 new的时候 进阶学习设计模式*
public function __construct($name,$salary,$age,$nation='ch')
{
$this -> username =$name;
$this -> salary =$salary;
$this -> age =$age;
// 初始化静态属性
self::$nation = $nation ;
}
// 静态属性
public static $nation = '中国';
// 静态方法
public function hello(){
return '你好,'. User3 ::$nation;
// 在类中, 使用 self::来引用当前类
// return 'Hello,' . self::$nation;
}
}
$user3 =new User3('小猫',2000,2);
echo $user3 ->username .'<hr>';
echo $user3 :: $nation .'<hr>';
// echo $user3 ->salary .'<hr>';
// echo $user3 ->age .'<hr>';
$user3 =new User3('小狗',3000,3);
echo $user3 ->username .'<hr>';
// echo $user3 ->salary .'<hr>';
// echo $user3 ->age .'<hr>';
// echo $user3->nation . '<br>';
// 类外部,访问静态成员,使用 类名称::
// echo $user3 ::$nation .'<hr>';
// 类外部,访问静态方法
echo User3::hello() . '<br>';