开始水博客了咕咕
跟着Mochazz师傅的博客学习
0x01类
关于PHP的类,由class
关键字创建,然后使用new关键字实例化对象。其中变量称为属性,函数称为方法。
0x02 类成员的访问控制
Public:可以在任何地方被访问
Protected:可被其所在的类的子类和父类访问
Private:只能在类内部被访问,子类不能访问父类的私有属性
如未声明,默认为public
0x03 常量
使用const定义类常量
使用this关键字在类内部访问成员变量和方法
0x04 构造函数和析构函数
关于构造函数和析构函数的区别
<?php
class animals
{
private $name;
function __construct($value1,$value2)//可以有参数
{
//echo "构造函数<br>";
}
function __destruct()//不可以有参数
{
//echo "析构函数<br>";
}
}
$dog = new animals();
?>
构造函数在使用new关键字创建对象时自动执行,可传入参数;析构函数在对象被销毁时自动执行,不能有参数。
0x05 clone一个对象
clone是将原对象的所有信息从内存中复制一份,存储在信开辟的内存中。
0x06 继承
<?php
class admin{
public $user;
public function __construct($name){
$this->name = $name;
}
public function manager()
{
echo "I am {$this->name}.<br>";
}
}
class user extends admin{
function who(){
echo "manager of here";
}
}
$user1 = new user("m0re");
$user1->manager();
$user1->who();
?>
0x07 魔术方法
__clone()方法
__clone
方法会重写clone
,当使用clone
时,不仅会复制变量,还会执行__clone
里面的代码
对象复制可以通过clone
关键字来完成(如果可能,这将调用对象的 __clone()
方法)。对象中的 __clone()
方法不能被直接调用。
<?php
class Person
{
public $name;
public function __clone()
{
echo "正在clone对象";
}
}
$stu = new Person();
$stu2 = $stu;
$stu3 = clone $stu;
?>
__toString()
<?php
class Person{
public function __toString()
{
return "I am __toString().";
}
}
echo $person = new Person();
?>
__autoload()
__autoload()
方法会在第一次引用一个类时调用该方法,可以通过定义这个函数来启用类的自动加载
#Person.class.php
<?php
class Person{
function say()
{
echo "Hello,world";
}
}
?>
#flag.php
<?php
function __autoload($classname)
{
include($classname.".class.php");
}
$person = new Person();
$person->say();
json数据
json_decode(string,bool)当第二个参数为true时,返回一个数组,默认为false返回一个对象。
<?php
$arr1 = array("one"=>"1","two"=>"2","three"=>"3");
$arr2 = array("one","two","three");
var_dump(json_encode($arr1));
var_dump(json_decode(json_encode($arr1)));
var_dump(json_decode(json_encode($arr1),true));
var_dump(json_decode(json_encode($arr2)));
?>
抽象类
使用关键字abstract来声明一个抽象类以及抽象方法。抽象类不能实例化对象,子类继承抽象父类后,子类中必须有父类中的抽象方法。抽象类起到规定子类结构的作用,子类必须给出父类抽象方法的实现。
在子类中必须重写父类的抽象方法,否则会报错。
接口
接口是一种特殊的抽象类,使用关键字interface来声明一个接口,不能实例化对象。接口中的方法必须全是抽象方法成员属性必须是常量。所有的权限必须是public,由子类来拓展。使用implements代替extends来实现接口,一个类只能继承一个父类,但是可实现多个接口。如果一个类同时使用了继承父类和实现接口,必须先继承再实现。
<?php
interface example{
const NAME = "lisi";
const AGE = "120";
public function student();
}
interface example2 extends example{
public function worker();
}
class Person{
function child(){
echo "hhhhhhhhh~~~~";
}
}
interface example3{
public function teacher();
}
class child extends Person implements example,example3{
function student(){
echo "hello,student.<br>";
}
function teacher(){
echo "hello,teacher.<br>";
}
}
$zhangsan = new child();
$zhangsan->student();
$zhangsan->teacher();
?>
文件上传
#upload.hmtl
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文件上传</title>
</head>
<body>
<form enctype="multipart/form-data" action="index.php" method="post">
<input type="file" name="my_uploadfile">
<input type="submit" value="upload">
</form>
</body>
</html>
#index.php
<?php
var_dump($_FILES);
?>
- 本文链接:https://m0re.top/posts/94594340/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
您可以点击下方按钮切换对应评论系统,
Valineutterances