다음 칼럼에서는 Composer 튜토리얼 칼럼에서 Composer 생성 환경을 소개하겠습니다. 필요한 친구들에게 도움이 되길 바랍니다!
작곡가는 어떤 용도로 사용되나요?
작곡가를 모르는 학생들이라면 이런 질문이 꼭 있을 거예요.
이 단어는 온라인, 특히 GitHub에서 자주 볼 수 있습니다. 작곡가 설치 없이 <span class="typ" style="font-size:14px;">Laravel</span>
、 <span class="typ" style="font-size:14px;">Yii</span>
时也经常看到这个词,在安装的时候推荐使用 composer 安装?难道只是安装的时候使用吗?我也使用过其他框架,为什么 <span class="typ" style="font-size:14px;">Thinkphp</span>
、 <span class="typ" style="font-size:14px;">Codeigniter</span>
를 사용하는 것은 어떻습니까?
이 질문을 가지고 공부합시다.
composer 공식 웹사이트: https://www.phpcomposer.com
composer는 PHP(5.3+)에서 종속성을 관리하는 데 사용되는 도구입니다.
오랫동안 PHP의 오픈소스 방식은 프로젝트 수준이었습니다. 즉, 일단 오픈소스이면 CMS 전체 세트(Dede, WordPress, discuz), 전체 세트와 같은 프로젝트라는 의미입니다. 프레임워크(Thinkphp, Codeigniter). 왜? 가장 중요한 이유 중 하나는 분해가 어렵다는 점입니다. 분해하면 결합할 수 있는 효과적인 관리 도구가 없어 분해된 소형 모듈에 대해 아무도 신경 쓰지 않는다는 것입니다.
그러다가 등장한 것은 모두가 분해한 작은 모듈을 관리하고 이를 하나의 완전한 프로젝트로 효과적으로 통합하는 역할을 하는 효과적인 관리 도구입니다.
예를 들어 로깅에는 monolog/monolog를 사용하고, HTTP 클라이언트에는 guzzlehttp/guzzle을 사용하세요.
Composer 패키지 플랫폼: https://packagist.org, 다수의 우수한 설치 패키지가 포함되어 있습니다. 단 하나의 Composer 명령으로 우수한 코드를 프로젝트에 쉽게 사용할 수 있습니다.
자랑스러운 PHPer로서 우리는 항상 다른 사람의 개발 패키지를 사용할 수는 없으며 다른 사람이 사용할 수 있고 우리 자신을 위해 패키지를 직접 개발해야 합니다.
이제 이렇게 많은 장점이 있다는 것을 알았으니, 작곡가 설치부터 시작해 보겠습니다.
작곡가를 설치하는 방법은 무엇인가요?
공식 소개 문서: https://docs.phpcomposer.com/00-intro.html
위 방법을 통해 설치가 완료됩니다.
다음으로 Composer 도구와 결합된 GitHub를 사용하여 Composer 패키지를 개발하는 방법에 대한 예를 제공합니다.
작곡기 패키지는 어떻게 개발되나요?
예를 들어, 숫자 처리를 위한 작곡가 패키지를 개발하세요.
GitHub에서 프로젝트 만들기
GitHub에 로그인하고(계정이 없으면 계정을 만드세요) 오른쪽 상단에 있는 "+"를 클릭하고 "새 저장소"를 선택하세요.
생성 인터페이스에서 리포지토리 이름에 "numberFormat"을 입력하고 설명은 선택 사항이므로 지금은 비워둔 다음 공개(GitHub에서 권장, 무료, 모든 사람이 액세스 가능) 및 비공개( 유료, 지정된 사람만 액세스 가능, 개별 개발자는 무료(2019-01-09 이후), "Public"을 선택한 다음 "Initialize this repository with a README"를 체크하고 "Create Repository" 버튼을 클릭하면 생성이 성공합니다.
이 시점에서는 GitHub에 "numberFormat"이라는 빈 프로젝트가 생성되었음을 의미합니다.
다음으로 코딩을 위해 원격 프로젝트를 로컬(Git 명령줄, Git 클라이언트)에 복제해야 합니다.
composer.json을 만드는 방법을 알아보세요
composer.json 매개변수는 무엇이며 어떻게 작성하나요? 문서를 참고하세요: https://docs.phpcomposer.com/04-schema.html#composer.json
프로젝트는 개발 패키지를 호출해야 하며, 작곡가.json을 통해 파일을 로드하는 방법을 알 수 있습니다.
composer.json 可以使用两个方式创建,一种是 <span class="pln" style="font-size:14px;">composer init</span>
,另一种是手工创建。
咱们一起先执行下 <span class="pln" style="font-size:14px;">composer init</span>
看看效果。
在本地创建numberFormat目录,然后 git clone 刚才创建的项目。
//进入到本地numberFormat目录 composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (<vendor>/<name>) [root/number-format]:number-format/number-format Description []:一个处理数字的包 Author [XinLiang <109760455@qq.com>, n to skip]: //回车 Minimum Stability []: //回车 Package Type (e.g. library, project, metapackage, composer-plugin) []: //回车 License []: //回车 Define your dependencies. Would you like to define your dependencies (require) interactively [yes]?no Would you like to define your dev dependencies (require-dev) interactively [yes]?no { "name": "number-format/number-format", "description": "一个处理数字的包", "authors": [ { "name": "XinLiang", "email": "109760455@qq.com" } ], "require": {} } Do you confirm generation [yes]? //回车
至此,本地numberFormat目录就看到 composer.json 文件了,当然可以直接在目录下按照这个格式进行手工创建,后期直接编辑该文件即可。
创建项目编码内容
开发包结构如下:
--src 源码目录(必须)
--tests 单元测试目录(非必须)
我们按照既定的目录结构去创建目录和文件,然后再到composer.json里面修改一下即可。
接下来,在src目录中创建一个类(NumberFormat.php):
/** * 数字格式化类 * @author XinLiang */ namespace numberFormat; class NumberFormat { /** * 格式化字节 * @param int $num 数字 * @param int $precision 精准度 * @return string */ public static function byte_format($num = 0, $precision = 1) { if ($num >= 1000000000000) { $num = round($num / 1099511627776, $precision); $unit = 'TB'; } elseif ($num >= 1000000000) { $num = round($num / 1073741824, $precision); $unit = 'GB'; } elseif ($num >= 1000000) { $num = round($num / 1048576, $precision); $unit = 'MB'; } elseif ($num >= 1000) { $num = round($num / 1024, $precision); $unit = 'KB'; } else { return number_format($num).' Bytes'; } return number_format($num, $precision).' '.$unit; } }
修改 composer.json
{ "name": "number-format/number-format", "description": "一个处理数字的包", "authors": [ { "name": "XinLiang", "email": "109760455@qq.com" } ], "minimum-stability": "dev", "require": { "php": ">=5.3.0" }, "autoload": { "psr-4": { "numberFormat\\": "src/" } }, "license": "MIT" }
至此,我们的开发包已经完成,接下来我们来测试下这个包是否可用。
测试开发包
在本地numberFormat目录下,通过 <span class="pln" style="font-size:14px;">composer install</span>
安装
composer install Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Writing lock file Generating autoload files //表示安装成功
惊奇的发现,在本地numberFormat目录多一个 <span class="pln" style="font-size:14px;">vendor</span>
目录。
在tests目录创建 NumberFormatTest.php
/** * 数字格式化测试类 * @author XinLiang */ require '../vendor/autoload.php'; use \numberFormat; $number = '102400010'; echo numberFormat\NumberFormat::byte_format($number); //输出:97.7 MB
至此,测试成功,接下来就是要发布到packagist平台,给广大开发者见面了。
发布到 packagist 平台
packagist.org 为 composer 安装包的平台(可用GitHub账号登录)。
现将本地代码提交到GitHub。
发布到 packagist 平台,登录后在首页的右上角有一个"Submit"按钮,点击即可进入开发包提交的界面。在“Repository URL (Git/Svn/Hg)”输入框中,输入GitHub项目的地址,点击“Check”按钮,稍微等待几秒钟,会显示验证成功,并显示出“Submit”按钮,点击即完成了开发包的提交了。
恭喜你,这个开发包可以在任何支持 composer 的PHP框架中使用了。
那么问题来了,刚才我们的包写的有的简陋,后期我们维护代码,新增代码还需要按照原来的方式操作一遍吗?
不!因为我们可以在GitHub平台设置代码更新,同时能让 packagist.org 自动更新,是不是很酷!
在GitHub中找到代码仓库,然后选择"settings" -> “Webhooks” ,默认是绑定自动更新的。
如果未绑定,可以这样设置:"settings" -> “Webhooks” -> "Add webhook" ->
Payload URL填写:“https://packagist.org/api/github”
Content type填写:“application/json”
Secret填写:“packagist提供的token”
其他的默认即可
点击“Add webhook” 完成。
至此,后期我们更新代码后会自动同步到 packagist.org 上。
//其他开发者可以这样获取包 composer require number-format/number-format:dev-master
为什么会有:dev-master,为什么引用其他的包不用这样设置?
因为我们引用的其他包都是稳定包,默认为:-stable。
是因为我们 composer.json 中设置了 minimum-stability 属性,这个可以了解下“版本约束”,在这就不多说了。
当我们在发布包后,如果获取不到报错怎么办,有可能是镜像的问题。
composer 设置镜像地址
//查看全局设置 composer config -gl //第一种:设置国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com //第二种:设置国内镜像 composer config -g repo.packagist composer https://packagist.laravel-china.org //第三种:设置国内镜像 composer config -g repos.packagist composer https://php.cnpkg.org
小结
通过这篇文章,解决了上述提到的三个问题:
composer 是用来干嘛的?
composer 是如何安装的?
composer 包是如何开发的?
看完后,是不是觉得 Composer 包开发原来这么简单,作为骄傲的程序员,去开发属于自己的 Composer 包吧!
위 내용은 Composer 패키지 개발이 그렇게 쉬운가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

API 문서를 유지하고 업데이트하는 것은 API를 개발할 때 일반적이고 시간이 많이 걸리는 작업입니다. 최근에 Laravel 기반 프로젝트를 개발할 때 문제가 발생했습니다. API의 각 업데이트 후에는 수동으로 문서를 업데이트해야합니다. 이는 시간이 소요될뿐만 아니라 오류가 발생하기 쉽습니다. 일부 연구 후, API 문서를 자동으로 생성하여 작업 효율성을 크게 향상시킬 수있는 Owowagency/Automated-API-DOCS 라이브러리를 발견했습니다. 다음 주소를 통해 작곡가를 배울 수 있습니다.이 기사의 학습 주소는 작곡가를 통해이 라이브러리를 설치하고 사용하는 방법을 공유하여 API 문서 유지 보수 문제를 해결하고 장점과 실제 응용 효과를 논의합니다.

외부 RESTAPI와 자주 상호 작용 해야하는 프로젝트를 개발할 때 어려운 문제가 발생했습니다. 모든 요청에는 수동으로 HTTP 요청, 인증 처리, 헤더 정보, 매개 변수 등이 크고 오류가 발생하기 쉽습니다. 여러 가지 방법을 시도한 후 Ogillot/PHP-Restclient 라이브러리를 발견하여 작업을 크게 단순화하고 개발 효율성을 향상 시켰습니다.

최근의 PHP 프로젝트에서 우리는 비동기 프로그래밍에 대한 도전에 직면했습니다. 프로젝트는 많은 네트워크 요청을 처리해야합니다. 기존 동기화 모드로 처리되면 성능이 크게 줄어들고 사용자 경험이 영향을받습니다. 여러 솔루션을 시도한 후 마침내이 문제를 해결하기 위해 GuzzleHttp/Promises Library를 사용하기로 결정했습니다. 다음은 작곡가를 통해이 라이브러리를 설치하고 사용한 방법과 프로젝트에 대한 상당한 개선 사항입니다.

Roketipanel 프로젝트를 개발할 때 복잡한 문제가 발생했습니다. 다른 환경에서 효율적으로 테스트하고 개발하는 방법. 특히 데이터베이스 구성 및 Behat 테스트를 처리 할 때 구성의 복잡성이 혼란스러워집니다. Composer와 그 종속성 관리 기능을 사용 함으로써이 프로세스를 성공적으로 단순화하고 개발 효율성을 향상 시켰습니다.

Laravel 및 Vue.js를 기반으로 프로젝트를 개발할 때 두통이 있습니다. 양식을 효율적으로 만들고 관리하는 방법. 특히 백엔드에서 양식 구조를 정의하고 프론트 엔드에서 동적 형태를 생성 해야하는 경우 전통적인 방법은 번거롭고 오류가 발생하기 쉽습니다. 많은 방법을 시도했지만 결과는 만족스럽지 않았습니다. 마지막으로, 나는 워크 플로를 단순화했을뿐만 아니라 개발 효율성을 크게 향상시킨 K-Eggermont/Lara-Vue-Builder 라이브러리를 발견했습니다.

정부 웹 사이트 프로젝트를 개발할 때 어려운 문제가 발생했습니다. 특히 시각 장애가있는 사용자의 요구를 충족시키기 위해 웹 사이트의 접근성을 향상시키는 방법, 특히 시각 장애가있는 사용자, 웹 사이트 탐색 및 운영은 매우 어려울 수 있습니다. 여러 가지 방법을 시도한 후, 나는 웹 사이트의 접근성을 크게 향상시키는 FlyingFocus라는 JavaScript 라이브러리를 발견했습니다. 그러나 그것을 Silverstripe 웹 사이트에 통합하는 것은 어려운 일입니다. 다행스럽게도 DIANZ/Silverstripe-Flying-Focus 모듈을 발견하여 FlyingFocus의 통합 프로세스를 단순화하고 퍼즐을 해결했습니다.

개발 중에 HTTP 요청이 종종 필요하며, 이는 데이터를 가져 오거나 데이터를 보내거나 외부 API와 상호 작용하는 것일 수 있습니다. 그러나 복잡한 네트워크 환경과 변경 요청 요구 사항에 직면 할 때 HTTP 요청을 효율적으로 처리하는 방법이 어려워집니다. 프로젝트에서 문제가 발생했습니다. 요청을 다른 API에 자주 보내야하고 후속 디버깅 및 분석을 용이하게하기 위해 요청을 기록해야합니다. 몇 가지 방법을 시도한 후 Yiche/HTTP 라이브러리를 발견했습니다. HTTP 요청의 처리를 단순화 할뿐만 아니라 동적 로깅 기능을 제공하여 개발 효율성을 크게 향상시킵니다.

Laravel 프로젝트를 개발할 때는 종종 JSON 또는 CSV 파일을 처리하는 것과 같은 반복적 인 작업이 발생합니다. 이러한 작업은 시간이 소요될뿐만 아니라 오류가 발생하기 쉽습니다. 최근 Laravel 프로젝트를 개발할 때 JSON 및 CSV 파일을 자주 읽고 쓸 필요가있었습니다. 다양한 방법을 시도한 후 Web64/Laravel-Helpers 라이브러리를 발견하여 이러한 작업을 크게 단순화하고 개발 효율성을 향상 시켰습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

Dreamweaver Mac版
시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
