Drupal 7 开发内部培训资料, 分头诗人

drupal8

0
投票
0
回答
9463
查看
0
投票
0
回答
3078
查看
0
投票
1
回答
3312
查看

d8的目录结构、自动加载及使用自动加载的方式加载第三方库

上周没写,主要是忙了点

d8的目录结构已经有很多人都说了,不在重复他们说过的东西了,只说几个自己的东西,而自己这些都用到了drupal的自动加载

回顾下上次说的那一部分

//看着这行代码
$autoloader = require_once 'autoload.php';
//打开文件,后又是一个包含,继续打开
return require __DIR__ . '/vendor/autoload.php';
 
//注意composer,这个东西,这是一个php管理工具
<?php
 
// autoload.php @generated by Composer
 
require_once __DIR__ . '/composer' . '/autoload_real.php';
 
return ComposerAutoloaderInitDrupal8::getLoader();

d8使用了composer进行自动加载。

composer 这个php管理工具有很多框架都在使用,yii2,d8,symfony等等都在用。

这个自动加载有5种方式,如果你添加了一个新的类库,可以使用其中任意一种,这4种方式分别为class_map,files,namespace,psr4.对应composer文件夹下的autoloder_*.php文件

我只熟悉prs4,其他的没仔细看,有兴趣的朋友看了,可以给我讲讲

psr4是一种标准与其对应的是之前的psr0标准,psr4定义存放目录的方式为,当然这些也没有什么意义,可以作为了解内容。

d8的入口文件及引申

d8入口文件

<?php

/**
 * @file
 * The PHP page that serves all page requests on a Drupal installation.
 *
 * All Drupal code is released under the GNU General Public License.
 * See COPYRIGHT.txt and LICENSE.txt files in the "core" directory.
 */
//使用了两个命名空间,有什么作用呢,后面auto会用到。
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;
// 包含自动加载文件
$autoloader = require_once 'autoload.php';
// 创建一个DrupalKernel对象
$kernel = new DrupalKernel('prod', $autoloader);
//获取请求
$request = Request::createFromGlobals();
//处理对请求处理
$response = $kernel->handle($request);
//向浏览器发出回应
$response->send();
//事件监听,监听整个请求和回应的过程
$kernel->terminate($request, $response);

这一整套流程其实就是Symfony的运行机制

当然为了更好的了解这个运行过程,从网上找了个图片下

其实这里可以用自己的理解方式来理解上述问题,我做了如下方式,当然这只是粗糙的思路,并不是完美的代码

打算使用symfony,系统的搞一搞drupal8

据说drupal8是用symfony写的,不要问我是据说说的,我也是听说的。最近接触了下symfony2做的开源程序,感觉symfony2有点意思,打算从头系统的学下symfony,然后源码分析下drupal8.当然一切都是建立在drupal8是用symfony写的,这一基础上。

争取每星期搞出一篇blog出来

0
投票
3
回答
1696
查看
0
投票
4
回答
3648
查看

页面

订阅 RSS - drupal8