🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余11个优惠名额) →

博客

Ninghao Playbook:自动化配置本地的 Drupal 开发环境

Ninghao Playbook(宁皓剧本),是用 Ansible 写的一个自动化配置 Drupal 本地开发环境的剧本,它需要结合 Vagrant 使用。它可以自动配置虚拟机,安装好 Drupal 所需要的运行环境(nginx,php-fpm,mariadb ... ),还有 Drupal 本身,以及一些常用的模块(views,token,features,module_filter ... )。

playbook

自动化配置服务器 — 配置管理系统( Configuration Management System )

在计划 Drupal 从头到尾这个系列课程的时候,我觉得我们的问题是,不仅仅是要把东西做出来,怎么去做,用什么方法,这个流程对不对,能不能简化,自动化,团队化,这些也非常重要。首先我想的是,能不能找一种自动化的方法,去在本地配置一个开发 Drupal 的环境,并且直接就把 Drupal 安装好了,甚至可以自动去安装一些常用的模块。

我经常跟大伙说,您要在本地电脑上,用虚拟机手工去搭建一个开发环境,这个虚拟机用 Vagrant 去管理。按照 Web 开发环境这个学习手册,你应该可以做到手工去搭建这个环境。我推荐先亲自动手去搭建这个环境,是因为,您需要了解自己都做了什么,每一个步骤是什么意思,熟悉在命令行界面下工作。这些都了解了以后 ,我们就要用一种自动化的方式去做这些事了,重复的工作一点也不美。

课程预告:Drupal 从头到尾

关于 Drupal ,我们已经说了不少,不过还是留下了很多问题。比如 Drupal 开发的流程应该是什么样的,怎么样使用 Drupal 的 API 来创建自己需要的模块,如何用 Drupal 开发一个真正的产品。今年的一开始,我们主要先解决这三个问题。这是一个系统的课程,可能要持续挺长时间。我打算每个礼拜完成一小部分,然后发布视频,并且一起讨论遇到的问题。为了这个课程,我特意创建了一个论坛(创建中 ... ),这样可以更方便的一起讨论并解决遇到的问题。这个课程结束以后,你应该会对 Drupal 有一个更好的理解,更有自信使用 Drupal 去创建你想要的网站应用。

这开始之前,先留个作业,完成下面这几个学习手册:

  1. 学习手册:Web 开发环境与服务器生产环境
  2. 学习手册:前端开发工作流程
  3. 学习手册:PHP 脚本语言
  4. 学习手册:Drupal 内容管理系统

不需要全部理解,不过至少要知道自己遇到了什么问题,需要什么,才能解决。不用太担心 :)

简单总结下去年我们都做了些什么

去年,我们做了一些看起来零七八碎的东西,其实它们也是有关联的,大概分成几块:工作流程,前端开发,开发环境,还有后端技术。

工作流程

一个现代的工作流程,可以让我们从混乱中解脱,少做重复的动作,更有效率。这也是专业与业余的重要区别,我们都想努力变成专业的,因为我们在乎自己做的事情。

Git,是必备工作,它的主要功能就是版本控制,这里说的版本,就是你每次修改你的项目,都算是项目的一个版本,你可以把这个版本用 Git 保存一下,这样你就可以再用 Git 去控制它,比如把项目恢复到你保存的某个版本上。入门很简单,先熟悉在命令行界面下工作,然后再学几个 Git 常用的命令就行了。起步,您真的不需要一本 500 页的书,在宁皓网花 1个半小时看视频足够了。

Bower 是个小工具,可以管理前端项目用的资源,比如一些框架什么的,它用一个文件描述了项目需要用的东西,用一条命令就可以去自动下载这个文件上列出的资源,还有这些资源所依赖的其它的东西。用 20 分钟,看一下这个课程。

Laravel 5 中文手册(十二):外观 Facades

介绍

Facades 为应用的 IoC container 的类提供了一个静态的接口。Laravel 里面自带了一些 Facades,其实你应该已经用到它们了,不过可能还不知道它们是什么。Laravel 的 Facades 像是 Ioc container 类的静态代理,比起传统的静态方法(Static methods),Facades 更简洁,也更容易表达,更具可测性(Testability)与灵活性(Flexibility)。

有时候你可能需要为你的应用跟包去创建自己的 Facades,下面我们就一起去看一下相关的概念,开发,还有这些类的用法。

注意:在了解 Facades 之前,你最好先了解一下 Laravel 里的 Ioc Container

Laravel 5 中文手册(十一):合同 Contracts

Laravel 的合同(Contracts)就是在框架里定义核心服务的一些接口。比如,一个 Queue 合同定义了队列工作需要用到的一些方法,Mailer 合同里边定义了发送邮件要用的一些方法。

框架为每个合同都提供了一个对应的实施。比如,Laravel 提供了一个 Queue 实施,里面有各种驱动,Mailer 实施里面用的是 SwiftMailer 。

所有的 Laravel 合同都在各种的 Github 仓库里。这为所有可用的合同,都提供了一个可以快速查看参考的地方,这样其它的开发者可以使用这些独立的,解耦的包。

Laravel 5 中文手册(十):服务容器 Service Container

介绍

Laravel Service Container 是管理类的依赖的强大的工具。依赖注入(Dependency injection)其实就是使用类的构造函数或者 setter 方法,把类所依赖的东西注入到类里面。

来看个简单的示例:

<?php namespace App\Handlers\Commands;

use App\User;
use App\Commands\PurchasePodcast;
use Illuminate\Contracts\Mail\Mailer;

class PurchasePodcastHandler {

    /**
     * The mailer implementation.
     */
    protected $mailer;

    /**
     * Create a new instance.
     *
     * @param  Mailer  $mailer
     * @return void
     */
    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }

    /**
     * Purchase a podcast.
     *
     * @param  PurchasePodcastCommand  $command
     * @return void
     */
    public function handle(PurchasePodcastCommand $command)
    {
        //
    }

}

在上面例子里,PurchasePodcast 命令处理器需要在有人购买了 podcast 以后去发送 e-mail 。所以,我们要去注入一个可以发送邮件的服务。因为这个服务是注入进来的,所以我们就可以很容易把它换成其它的实施。 在 “mock” 的时候也会很容易,或者在测试应用的时候,去创建一个假的 mailer 实施。

要去创建大型的应用,或者为 Laravel 核心做贡献,都需要深入的理解 Laravel Service Container 。

Laravel 5 中文手册(九):服务提供者 Service Providers

介绍

Service Providers 是所有 Laravel 应用启动(Bootstrapping)的中心位置。包括你自己的应用,还有所有 Laravel 的核心服务都是通过 Service Providers 启动的。

启动的大概的意思就是去注册一些东西,包括注册 Service Container,事件监听器,过滤器,甚至是路由。Service Providers 是配置你的应用的中心位置。

打开 Laravel 里的 config/app.php 文件,你会看到一个 providers 数组。这些就是你的应用要加载的所有的 Service provider 类。这里面有些是延迟(deferred)Providers ,意思就是它们不会在每次请求的时候都去加载,只有在真正需要它们提供的服务的时候才会被载入进来。

在下面我们学一下怎么样创建自己的 Service Providers ,并且把它们注册到 Laravel 的应用里。

Laravel 5 中文手册(八):视图 Views

基本用法

在视图里面包含了应用要提供的 HTML,它的主要的作用就是去把控制器还有 domain 逻辑跟展示的逻辑分离开。视图文件存储在 resources/views 这个目录里面。

resources/views
├── app.blade.php
├── auth
│   ├── login.blade.php
│   ├── password.blade.php
│   ├── register.blade.php
│   └── reset.blade.php
├── emails
│   └── password.blade.php
├── errors
│   └── 503.blade.php
├── home.blade.php
├── vendor
└── welcome.blade.php

4 directories, 9 files

Laravel 5 中文手册(七):响应 Responses

基本的响应

从路由上返回字符串

Laravel 的路由,最基本的响应就是一个字符串:

Route::get('/', function()
{
    return 'Hello World';
});

创建自定义的响应

对于大部分路由还有控制器动作,你都需要返回一个完整 Illuminate\Http\Response 实例或者一个视图。返回完整的 Response 实例,可以让你去定制响应的 HTTP 的状态码还有头部信息。Response 实例继承了 Symfony\Component\HttpFoundation\Response ,提供了很多种方法来创建 HTTP 响应:

use Illuminate\Http\Response;

return (new Response($content, $status))
              ->header('Content-Type', $value);
微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点