Skip to content

🔧 SetProperty

设置 composer.json 的顶级属性,如项目名、描述、类型、关键词、许可证等。

何时使用

需要在代码中初始化或修改项目元信息时使用。该方法对一组白名单属性做类型安全的赋值,避免手写 JSON。config 段内的键值请改用 SetConfig

签名

go
func (c *Composer) SetProperty(property string, value interface{}) error

参数

参数类型说明
propertystring属性名,见下表
valueinterface{}属性值,类型须与属性匹配(不匹配时静默忽略)

支持的属性及其值类型:

属性值类型
namestringvendor/package
descriptionstring
typestringlibrary/project/metapackage 等)
keywords[]string
homepagestring(URL)
licenseinterface{}(字符串或字符串数组)
minimum-stabilitystringstable/RC/beta/alpha/dev
prefer-stablebool

返回值

  • error:读取或写入失败,或属性名不在白名单时返回 unsupported property 错误。

示例

go
package main

import (
	"log"

	"github.com/scagogogo/composer-skills/pkg/composer"
)

func main() {
	comp, err := composer.New(composer.DefaultOptions())
	if err != nil {
		log.Fatal(err)
	}

	if err := comp.SetProperty("name", "myvendor/mypackage"); err != nil {
		log.Fatal(err)
	}
	if err := comp.SetProperty("description", "一个很棒的 PHP 库"); err != nil {
		log.Fatal(err)
	}
	if err := comp.SetProperty("keywords", []string{"php", "library", "awesome"}); err != nil {
		log.Fatal(err)
	}
	if err := comp.SetProperty("license", "MIT"); err != nil {
		log.Fatal(err)
	}
	if err := comp.SetProperty("prefer-stable", true); err != nil {
		log.Fatal(err)
	}
}

进阶

  • ⚠️ 未列出的属性名会返回 unsupported propertyvalue 类型断言失败时(如把 int 传给 name)方法会静默跳过而不报错,调用方需自行保证类型正确。
  • 🔗 设置 config 段配置项请用 SetConfig;设置仓库、稳定性等可用 SetMinimumStabilitySetPreferredInstall 等专用方法。
  • 📖 底层结构见 ComposerJSONread-composer-json)。

基于 MIT 许可证发布