严格模式( 函数 )
模 式 : 严格模式 declare(strict_types=1); 类型不存在自动转换
强制模式(默认) declare(strict_types=0); 类型可自动转换
形参类型: 类名 , 接口 , 数组 , 方法名(callable) , int , string , float , bool
返 回 值: 严格模式下 形参类型 与 返回类型 保持一致
可空类型 : 函数参数或者返回值的类型要么为指定类型,要么为 null
function answer(): ?int {
return null; //ok
}
指定类型 : 返回值类型为指定类型
function returns_one(): int {
return 1;
}
匿名类
interface Logger {
public function log(string $msg);
}
class Application {
private $logger;
public function getLogger(): Logger { //限制返回类型
return $this->logger;
}
public function setLogger(Logger $logger) {
$this->logger = $logger;
}
}
$app = new Application;
// 使用 new class 创建匿名类
$app->setLogger(new class implements Logger {
public function log(string $msg) { //匿名类中继承接口函数
print($msg);
}
});
$app->getLogger()->log("我的第一条日志");
trait 特性
trait A{
public $name = '周心京';
public function getAge(){
echo "18";
}
}
trait B{
use A;
public function getName(){
echo $this->name;
}
}
class C{
use B;
public function setName(){
$this->name = '王者';
}
}
$c = new C;
$c->setName();
$c->getName();
上传文件
参考地址 : https://www.cnblogs.com/cqingt/p/6676248.html
第一步 : 是否有错误码 $_FILES['file']['error']
第二步 : 判断文件是否超出大小 $_FILES['file']['size']
第三步 : 判断文件mime类型是否正确 $_FILES['file']['type']
第三步 : 生成路径和文件名
第四步 : 判断是否是上传文件 $_FILEs['file']['tmp_name'] //is_uploaded_file()
第五步 : 上传文件 $_FILEs['file']['tmp_name'] //move_uploaded_file()
邮件
参考地址 : https://blog.csdn.net/sinat_37390744/article/details/54667794
参考地址: https://www.cnblogs.com/ryanzheng/p/8022487.html
$to = "275170074@qq.com"; // 接受者
$subject = "Test mail"; // 主题
$message = "Hello! This is a simple email message."; // 内容
$from = "329148898@qq.com"; // 发送者
$headers = "From: $from";
mail($to,$subject,$message,$headers);
运算符
合并运算符 变量存在并不为nobody
$username = $_GET['user'] ?? 'nobody';
组合运算符
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
COOKIE
参考地址: https://blog.csdn.net/hai_qing_xu_kong/article/details/51922536
//设置cookie
setcookie("user", "php", time()+60);
//取cookie
$_COOKIE["use"]
//删除cookie
setcookie("user", "", time()-3600);
SESSION
参考地址: https://blog.csdn.net/hai_qing_xu_kong/article/details/52262182
//开启
session_start([
'cache_limiter' => 'private', // 阅读完立即关闭
'read_and_close' => true,
]);
//设置session
$_SESSION['views']=1;
//销毁session
unset($_SESSION['views']); //部分 session_destroy();//全部
魔术方法
参考地址: http://www.jb51.net/article/96167.htm
__construct(): 类的构造函数
——destruct(): 类的析构函数
——call(): 在对象中调用一个不可访问方法时调用
——callStatic(): 用静态方法调用一个不可访问方法时调用
__get(); 获得一个不可访问类的成员变量时调用
__set(); 设置一个不可访问类的成员变量时调用
__isset(); 当对不可访问属性调用isset()或empty()时调用
__unset(); 当对不可访问属性调用unset()时被调用
__sleep(); 执行serialize()时,先会调用这个函数
__wakeup(); 执行unserialize()时,先会调用这个函数
__toString(); 类被当成字符串时的回应方法
__invoke(); 调用函数的方式调用一个对象时的回应方法
__set_state(); 调用var_export()导出类时,此静态方法会被调用
__clone(); 当对象复制完成时调用
__autoload(); 尝试加载未定义的类
__debugInfo(); var_dump()打印对象时调用
常量
__LINE__: 当前行号
——FILE__: 当前文件在服务器的路径
——FUNCTION__: 当前函数名
——CLASS__: 当前类名
——METHOD__: 当前成员方法名
__PHP_OS: php运行的操作系统
——PHP_VERSION: 当前php版本
__TRAIT__: trait的名字
__DIR__: 文件所在目录
__NAMESPACE__: 当前命名空间名称