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

drupal8

0
投票
0
回答
132
查看
0
投票
0
回答
1324
查看

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
回答
563
查看
0
投票
4
回答
1404
查看

drupal8初探,d8和d7关于模块通用的方式

drupal8的bate版本出来了,据说d8手册已经出来了,在百度上面搜了下没有找到 ,T-T,唉,只能自己没事瞎琢磨了

这些只是自己瞎猜测的没有进行实践

发现目录结构变化了很多,网站的theme和module该到了根目录themes和modules里面。 同时兼容d7的方式sites/all/的方式

在sites下的readme 是这么说的,大意差不多

This directory structure contains the settings and configuration files specific
to your site or sites and is an integral part of multisite configurations.

It is now recommended to place your custom and downloaded extensions in the
/modules, /themes, and /profiles directories located in the Drupal root. The
sites/all/ subdirectory structure, which was recommended in previous versions
of Drupal, is still supported.

See core/INSTALL.txt for information about single-site installation or
multisite configuration.

关于模块

然后看了下d8的模块目录,看了下dblog模块,发现这个就是watchdog的记录插入数据库方式

name.module文件最醒目,和d7差不多

页面

订阅 RSS - drupal8