Laravel 5.8 中文文档

源码安装

先下载composer,并添加到环境变量里面,然后执行如下命令,将在本目录生成laravel5.8目录

composer dumpautoload -o
composer create-project --prefer-dist laravel/laravel=5.8.* laravel5.8

本地搭建

环境搭建篇

基础知识

PHP反射

PHP反射ReflectionClass、ReflectionMethod

PHP反射(ReflectionClass、ReflectionMethod)在ThinkPHP框架的控制器调度模块中的应用

<?php
class person{
public $name;
public $gender;
public function say(){
  echo $this->name," \\tis ",$this->gender,"\\r\\n";
}
public function set($name, $value) {
  echo "Setting $name to $value \\r\\n";
  $this->$name= $value;
}
public function get($name) {
  if(!isset($this->$name)){
    echo '未设置';
    $this->$name="正在为你设置默认值";
  }
  return $this->$name;
  }
}
// 反射获取类的原型
$obj = new ReflectionClass('person');
$className = $obj->getName();
$Methods = $Properties = array();

foreach($obj->getProperties() as $v)
{
    $Properties[$v->getName()] = $v;
}

foreach($obj->getMethods() as $v)
{
    $Methods[$v->getName()] = $v;
}

echo "class {$className}\\n{\\n";
echo "\\t<br>";
is_array($Properties) && ksort($Properties);
foreach($Properties as $k => $v)
{
    if($v->isPublic())
        echo 'Public';
    if($v->isPrivate())
        echo 'Private';
    if($v->isProtected())
        echo 'protected';
    echo "\\t";
    echo $k;
    echo "<br>";
}

if(is_array($Methods)) 
    ksort($Methods);
foreach($Methods as $k => $v)
    {
        echo "function {$k}(){}\\n<br>";
    }
echo "}\\n";
class person {
Public gender
Public name
function get(){}
function say(){}
function set(){}
} 

简单理解Ioc服务容器

浅析依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI)

两张图让你理解 IoC (控制反转)

引用:laravel 学习笔记 —— 神奇的服务容器

简单理解就是:表面上使用很简单的调用,其背后框架已经写了很多,控制反转,依赖注入。具体可以看下面简单的例子;

interface SuperModuleInterface
{
    /**
     * 超能力激活方法
     *
     * 任何一个超能力都得有该方法,并拥有一个参数
     *@param array $target 针对目标,可以是一个或多个,自己或他人
     */
    public function activate();
}
/**
 * X-超能量
 */
class XPower implements SuperModuleInterface
{
    public function activate()
    {
        // 这只是个例子。。具体自行脑补
    }
}

/**
 * 终极炸弹 (就这么俗)
 */
class UltraBomb implements SuperModuleInterface
{
    public function activate()
    {
        // 这只是个例子。。具体自行脑补
    }
}
class Superman
{
    public $module;

    public function __construct(SuperModuleInterface $module)
    {
        $this->module = $module
    }
}

什么叫依赖注入

本文从开头到现在提到的一系列依赖,只要不是由内部生产(比如初始化、构造函数 __construct 中通过工厂方法、自行手动 new 的),而是由外部以参数或其他形式注入的,都属于 依赖注入(DI) 。是不是豁然开朗?事实上,就是这么简单。下面就是一个典型的依赖注入: