前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >创建你的第一个composer包

创建你的第一个composer包

原创
作者头像
俗可耐
发布2018-09-13 18:00:29
1K0
发布2018-09-13 18:00:29
举报
文章被收录于专栏:俗人笔记俗人笔记

Composer是PHP的包管理器,我们可以很方便地使用别人共享的包,当然我们也可以创建自己的包以分享给其他人使用。本文就是教你如何创建自己的第一个composer包。

文件结构

首先创建如下目录结构及文件,talking_robot为项目的根目录:

代码语言:txt
复制
0 talking_robot $ tree
.
└── src
    └── TalkingRobot
        └── Talk.php

2 directories, 1 file

编辑Talk.php文件

代码语言:txt
复制
<?php
namespace TalkingRobot;

class Talk
{
    public static function sayHello()
    {
        return 'Hello Composer';
    }
}

开始 Composer

composer init

现在要在项目的根目录里创建一个composer.json的文件,我们可以手动创建,也可以在根目录里通过composer init命令来根据提示创建:

代码语言:txt
复制
0 talking_robot $ composer init


  Welcome to the Composer config generator



This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [cl/talking_robot]: greatcl/talking_robot
Description []: I am a talking robot and an example of composer package.
Author [caolei <caolei@qiyi.com>, n to skip]:
Minimum Stability []: dev
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []: MIT

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]?
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:

{
    "name": "greatcl/talking_robot",
    "description": "I am a talking robot and an example of composer package.",
    "license": "MIT",
    "authors": [
        {
            "name": "caolei",
            "email": "caolei@qiyi.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}

Do you confirm generation [yes]?

创建完成后,根目录下就生成了composer.json文件,目录结构如下:

代码语言:txt
复制
0 talking_robot $ tree
.
├── composer.json
└── src
    └── TalkingRobot
        └── Talk.php

2 directories, 2 files

添加自动加载

然后我们可以手动编辑生成的composer.json文件,添加php的版本要求和自动加载(使用PSR-0),使用TalkingRobot命名空间,加载src目录下的所有文件,如下:

代码语言:txt
复制
{
    "name": "greatcl/talking_robot",
    "description": "I am a talking robot and an example of composer package.",
    "license": "MIT",
    "authors": [
        {
            "name": "caolei",
            "email": "caolei@qiyi.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "psr-0": {
            "TalkingRobot": "src/"
        }
    }
}

进行测试

composer install

在根目录中使用composer install安装composer文件。

代码语言:txt
复制
0 talking_robot $ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files

0 talking_robot $ tree -L 2
.
├── composer.json
├── composer.lock
├── src
│   └── TalkingRobot
│       └── Talk.php
└── vendor
    ├── autoload.php
    └── composer

4 directories, 12 files
创建测试文件

在根目录中创建tests文件夹,在tests文件夹里创建test.php内容如下:

代码语言:txt
复制
<?php

// Autoload files using Composer autoload
require_once __DIR__ . '/../vendor/autoload.php';

use TalkingRobot\Talk;

echo Talk::sayHello();

当前的目录结构为:

代码语言:txt
复制
0 talking_robot $ tree -L 2
.
├── composer.json
├── composer.lock
├── src
│   └── TalkingRobot
├── tests
│   └── test.php
└── vendor
    ├── autoload.php
    └── composer

5 directories, 4 files

在根目录中运行测试文件:

代码语言:txt
复制
0 talking_robot $ php tests/test.php
Hello Composer

返回字符串Hello Composer,恭喜你,测试通过!

发布到Packagist.org

最简单的方法是使用Github。

创建Github仓库

在Github上创建一个仓库talking_robot,然后将代码推到Github仓库里。

我们先在根目录里创建.gitignore文件,把vendor目录和composer.lock文件排除git在外。

代码语言:txt
复制
0 talking_robot (master) $ cat .gitignore
vendor/*
composer.lock

推送代码

代码语言:txt
复制
git init
git add .
git commit -m 'First commit'
git remote add origin git@github.com:username/talking_robot.git
git push origin master

提交到Packagist

  1. 首先要在Packagist上注册账号并登录
  2. 点击顶部导航条中的Summit按钮
  3. 在输入框中输入github上的仓库地址,如:https://github.com/username/talking_robot
  4. 然后点击Check按钮 Packagist会去检测此仓库地址的代码是否符合Composer的Package包的要求。
  5. 检测正常的话,会出现Submit按钮,再点击一下Submit按钮,我们的包就提交到Packagist上了。

使用

我们就可以在其他项目引用talking_robot这个包了,方法如下:

在需要引用的项目的composer.json文件的require段加入:

代码语言:txt
复制
{
    "require": {
        "greatcl/talking_robot":"dev-master"
    }
}

如果项目初次使用composer执行composer install进行安装,否则使用composer update进行更新。

代码语言:txt
复制
0 use-test-packagist $ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing greatcl/talking_robot (dev-master 103b7cc)
    Cloning 103b7cc721d9509d3b041487fe1d0e1c46bc8cce from cache

Writing lock file
Generating autoload files

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件结构
  • 编辑Talk.php文件
  • 开始 Composer
    • composer init
      • 添加自动加载
        • 进行测试
          • composer install
          • 创建测试文件
      • 发布到Packagist.org
        • 创建Github仓库
          • 提交到Packagist
          • 使用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档