当我们编写PHP代码时,可能经常需要用到别人写的第三方库或者组建,这时候可以使用Composer来管理这些依赖软件包。在实际开发中,我们可能也会有自己写的一些通用性的代码,这时候可以将这些代码打包成一个Composer包进行管理,方便复用。
下面是创建自己的Composer包的基本步骤。
创建Composer包的基本步骤
步骤一:创建一个PHP项目
在你的本地或者云服务器上创建一个新的PHP项目,可以使用命令行创建一个空项目。
$ mkdir my-package
$ cd my-package
$ composer init
在初始化过程中,需要依次输入你的项目信息,例如:
- Package name:输入你的包名,例如myname/my-package
- Description:输入你的包的描述信息
- Package Type:输入你的包的类型,例如:library
- License:输入你的包的许可证,例如:MIT
- Minmum-stability:输入你包的稳定版本,例如:dev
步骤二:编写自己的代码
在my-package目录下,编写你的代码,例如:
<?php
namespace MyPackage;
class Hello
{
public function sayHello()
{
echo 'Hello world!';
}
}
步骤三:编写composer.json文件
在my-package目录下,创建composer.json文件,包含你的代码和相关信息,例如:
{
"name": "myname/my-package",
"description": "A test package",
"type": "library",
"require": {},
"autoload": {
"psr-4": {
"MyPackage\\": "src/"
}
},
"license": "MIT",
"authors": [
{
"name": "Your Name",
"email": "youremail@example.com"
}
],
"minimum-stability": "dev"
}
其中的autoload段,指定了自动加载的规则,例如:我们将MyPackage命名空间下所有的代码都放到src/目录下。
步骤四:编写README.md文件
在my-package目录下,创建README.md文件,介绍你的包的说明、使用方法等信息,例如:
# MyPackage
A test package for Composer
## Installation
```bash
composer require myname/my-package
Usage
<?php
require_once __DIR__ . '/vendor/autoload.php';
use MyPackage\Hello;
$hello = new Hello();
$hello->sayHello();
### 步骤五:打包和发布
在my-package目录下,通过Composer将包打包成tar.gz或zip文件,例如:
```bash
composer archive
然后,将打包好的文件发布到你自己的仓库或者其他支持Composer的包管理网站(例如:Packagist)上,让其他开发者可以方便的使用你的包。
示例
下面是两个简单的示例,详细说明了如何创建自己的Composer包。
示例一:创建一个自定义配置文件的Composer包
-
创建一个名为myconfig的目录,并在该目录下创建一个config.php文件。
-
编写config.php文件,并在其中定义一个数组:将COLOR和SIZE两个索引都赋予一个值,以用于缩放和着色。
<?php
return [
'COLOR' => 'red',
'SIZE' => '12px',
];
- 在myconfig目录下创建composer.json文件:
{
"name": "my/package-name",
"description": "A description of my package.",
"type": "library",
"autoload": {
"files": [
"config.php"
]
}
}
- 在控制台上,进入到myconfig目录,执行命令composer install生成autoloader文件。
$ composer install
- 使用自建Composer包,就可以加载新增配置:
<?php
require_once __DIR__.'/vendor/autoload.php';
echo My\Config::get('COLOR'); // red
echo My\Config::get('SIZE'); // 12px
示例二:创建一个支持MySQL数据库的Composer包
- 创建一个名为mymysql的目录,并在该目录下创建MySQL.php文件。
<?php
namespace My;
class MySQL
{
private $conn;
public function __construct($host, $username, $password, $dbname)
{
$this->conn = new \mysqli($host, $username, $password, $dbname);
if($this->conn->connect_error)
{
throw new \Exception('MySQL connect failed: ' . $this->conn->connect_error);
}
}
public function query($sql)
{
$result = $this->conn->query($sql);
if(!$result)
{
throw new \Exception('MySQL query failed: ' . $this->conn->error);
}
return $result;
}
}
- 建立目录结构:
mymysql/
+--src/
| +--MySQL.php
+--tests/
+--vendors/
+--composer.json
- 在mymysql的根目录下,建立composer.json文件:
{
"name": "my/mysql",
"description": "A MySql API for PHP",
"type": "library",
"autoload": {
"psr-4": {"My\\": "src/"}
},
"require": {}
}
- 在根目录下执行以下命令:
composer update
这将会在目录vendor/my/mysql/src/下生成一个autoload.php文件,用于自动加载MySQL类。
- 使用自建Composer包,连接到MySQL:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use My\MySQL;
$mysql = new MySQL('localhost', 'root', 'password', 'database_name');
$result = $mysql->query('SELECT * FROM `table_name` WHERE 1');
while($row = $result->fetch_assoc()){
print_r($row);
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP创建自己的Composer包方法 - Python技术站