组件化的微型 laravel

Container服务容器:
为了更好的提现原理, 这个实现是对laravel的结构做了简化
Contract-契约的存在
用来约束不同的DB服务类的实现, 就好像一个程序模板.
配套facade
一个快速从容器中调用类方法的方式

下面开始创建项目

$ cd /vagrant/b
$ composer init

Package name (<vendor>/<name>) [vagrant/b]: masterzcw/tiny-laravel
Description []: This is a small project modeled fater laravel.
Author [, n to skip]: 275107947 <275107947@qq.com>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
License []: MIT

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? n  
Would you like to define your dev dependencies (require-dev) interactively [yes]? n

{
    "name": "kevin/tiny-laravel",
    "description": "This is a small project modeled fater laravel.",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "275107947",
            "email": "275107947@qq.com"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes

此时在插件根目录创建出文件composer.json文件, 内容如上面的json.

载入命名空间

vendor/kevin/tiny-laravel
	---
	...
    "autoload":{
        "psr-4":{
            "Kevin\\TinyLaravel\\":"./src/"
        }
    },
	"require": {}
	---

更新composer

$ composer update

此时,在如下文件中会出现这个命名空间的注册, 证明composer.json的配置是ok的
/vendor/composer/autoload_psr4.php

index.php

require __DIR__.'/vendor/autoload.php';

use Masterzcw\TinyLaravel\Application\Application;
use Masterzcw\TinyLaravel\Facades\DB;

// 注册服务, 使用容器的单例
$providers = [
    // \Masterzcw\TinyLaravel\Contracts\Databases\IDB::class => \Masterzcw\TinyLaravel\Databases\Oracle\DB::class,
    \Masterzcw\TinyLaravel\Contracts\Databases\IDB::class => \Masterzcw\TinyLaravel\Databases\MySQL\DB::class,
];
foreach($providers as $key => $val){
    Application::getInstace()->bind($key, $val);
}

// 直接通过容器调用
$db = Application::getInstace()->make(\Masterzcw\TinyLaravel\Contracts\Databases\IDB::class);
echo $db->introduce()."<br>";

// 通过门面类调用指定的服务, 因为门面封装了容器的Application::getInstace()->make($class);
echo DB::introduce()."<br>";


以上是基本描述具体参见github上的代码

github:
https://github.com/masterzcw/componentized-tiny-laravel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值