lashes:斜线 stripslashes:去掉斜线 argument:参数 construct:构造 destruct:析构(销毁)
extends:继承 access:访问 variable:变量 constant:常量 convert:转换
interface:接口 implements:实现 abstract:抽象类 convention:惯例 extra:扩展 paginate:分页
thinkphp
依赖注入:向方法中注入一个对象参数,并自动实例化
class Demo1{ /** * \app\common\Temp: 类型限制,$temp参数必须是 \app\common\Temp类 的对象,并且会自动实例化 */ public function getMethod(\app\common\Temp $temp) { $temp->setName('PHP中文网'); return $temp->getName(); }}
动态配置:对当前控制器或者是某个方法里边进行动态的配置设置
namespace app\index\controller;class Index{ public function __construct() { config('before', 'beforeAction'); } public function index() { config('indexAction', 'index'); dump(config()); } public function demo() { dump(config()); }}
接口类
接口是类的模板,类是对象的模板
方法在接口里边是不做具体的实现的
interface Person{ public function eat(); public function sleep();}class Man implements Person{ public function eat() { echo '吃海鲜大餐...'; } public function sleep() { echo '半夜睡觉....'; }}class Woman implements Person{ public function eat() { echo '吃减法水果...'; } public function sleep() { echo '9点睡觉....'; }}class L{ public static function factory(Person $user) //Person做为类型限制,必须是实现了Person接口的类的对象 { return $user; }}$user = L::factory(new Woman());$user->eat();$user->sleep();
对象的复制是浅拷贝(地址传递,指向同一个内存,同一个值,这样省内存)普通类型的变量复制是深拷贝(变量之间通过复制值来进行的)
class A{ public $age = 0; public $username = ''; //对象属性 public $obj = null;}$a = new A();$b = $a;//$b = clone $a; //输出0 复制一份变量a的 值 ,给变量b$b->age = 1;var_dump($a->age); //1
当不能访问(找不到)属性或方法的时候,程序先看下有没有对应魔术方法,来执行魔术方法
__set
__get
__isset
__unset
__call
__callStatic
__invoke
__toString
命名空间 + 类名 = 类文件的路径
imooc.php
main.php
$this 等于类即将生成的对象,对象不能访问类里边的常量(故$this也不能),通过对象来调用类中的属性和方法self 等于这个类,可通过self::访问他的常量,通过 类:: 来调用类中的常量
调用类中的属性和方法——对象(类外边)/$this(类里边);
调用类中的常量——类::(类外边)/self::(类里边)
class Compute { const ONE = 1; const TWO = self::ONE + 1; //const TWO = $this->ONE + 1 错误 public $cpu = 'amd 4000';}var_dump( Compute::TWO);$compute = new Compute();var_dump( $compute->cpu);
静态属性或方法、类常量:属于类(而不属于对象),外部通过 类名:: 调用,内部通过self:: 访问
class Person{ public static $hand = '手'; public static $food = '脚'; public $a = 1; //a属于对象 const TWO = 2; public static function work() { echo(self::$hand); //手 echo(self::TWO); //2 //echo(self::$a); //错误,a属于对象,不属于类,不能用self:: //echo($this->a); //也错误,静态work()方法属于类,不属于对象,所以work()里边根本没有$this的上下文 }}$person = new Person();echo(Person::work());
parent:父类本身
self:类本身
this:类的对象
后期静态绑定
heredoc 定义字符串: