PHPackages                             bneglect/publish-test - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. bneglect/publish-test

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

bneglect/publish-test
=====================

用来测试发布的扩展包，没有实际用处，只是一次练习~

010PHP

Since Dec 21Pushed 6y agoCompare

[ Source](https://github.com/codingmonkey9/test)[ Packagist](https://packagist.org/packages/bneglect/publish-test)[ RSS](/packages/bneglect-publish-test/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

composer 发布扩展包练习
================

[](#composer-发布扩展包练习)

> ### 自己尝试写一个PHP扩展包发布出去，然后目的是能够使用`composer`安装。
>
> [](#自己尝试写一个php扩展包发布出去然后目的是能够使用composer安装)

- 命名规则：你要发布的包需要按照`厂商名/包名`即`vendor/package`格式命名；厂商名可以去**packagist**搜索一下，确认没有重名再使用。
- 每个组件应该有自己的命名空间。`命名空间`和上面的`命名规则`毫无关系。
- 命名空间：如果你的扩展包里使用了命名空间，那么注意必须要在`composer.json`里添加 **`autoload`**，否则composer安装之后也用不了。我第一次就是没加**autoload**，结果使用不了。**autoload里是配置你这个包的命名空间及对应目录**

```
{
    "name": "yurunsoft/composer-package-demo",
    "autoload": {
        "psr-4": {
            "Yurun\\ComposerPackageDemo\\": "src/"
        }
    }
}

```

下面是我的

```
{
	"name": "bneglect/publish-test",
	"description": "用来测试发布的扩展包，没有实际用处，只是一次练习~",
	"require": {
		"php": "^7.0"
	},
	"autoload": {
        "psr-4": {
            "test\\test\\": "/"
        }
    }
}

```

- 必须有`composer.json`文件在项目的根目录中。composer.json文件中必须至少包含一下几项：

```
{
    "name": "your-vendor-name/package-name",
    "description": "A short description of what your package does",
    "require": {
        "php": "^7.2",
        "another-vendor/package": "1.*"
    }
}

```

- **特别注意**：composer.json文件里每一个`}`前面都不能有逗号，否则会导致解析失败。
- **包**里只能是类，不能含有函数等。即便有函数也无法使用。并且**文件名和类名必须一致**。不然都会导致自动加载失败。至于如何发布一个包，这个包里含有函数，而不是只有类。或者这根本不可能实现？以后有时间再研究。心累-\_-#
- `myFirstExtensionPackageOfComposer.php`文件就是一个失败的例子。里面既包含了函数，又含有类。并且文件名不是类名。怎么改命名空间都无法使用。搞得我心累-\_-#
- `mySecondPackage.php` 文件里有函数，但是没有**命名空间**，只要引入改文件路径，就可以使用里面的函数。我想**是不是函数如果放在文件里，那就不能有命名空间，使用的时候引入文件路径即可。**
- 这些准备好之后，就把这个包提交到`VCS`（版本库）中，然后登陆**packagist**，点击`submit`。
- 大功告成！！！~~~

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/318c5059c1b6f0883b82abfc9836b08416f885afd3199a41128cbafab8619fc6?d=identicon)[codingmonkey9](/maintainers/codingmonkey9)

---

Top Contributors

[![codingmonkey9](https://avatars.githubusercontent.com/u/46665902?v=4)](https://github.com/codingmonkey9 "codingmonkey9 (25 commits)")

### Embed Badge

![Health badge](/badges/bneglect-publish-test/health.svg)

```
[![Health](https://phpackages.com/badges/bneglect-publish-test/health.svg)](https://phpackages.com/packages/bneglect-publish-test)
```

###  Alternatives

[eonasdan/bootstrap-datetimepicker

Date/time picker widget based on twitter bootstrap

7.2k492.4k9](/packages/eonasdan-bootstrap-datetimepicker)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
