关于composer:Composer-源管理

剽窃至此,节俭搜寻工夫 ,不便开发时复制 以后我的项目切换 composer config repo.packagist composer {source}全局切换 composer config -g repo.packagist composer {source}全局查看配置 composer config -g -l 以后我的项目查看配置 composer config -l禁用默认源镜像命令 composer config -g secure-http false 可用镜像 (1)、composerhttps://packagist.org (2)、phpcomposerhttps://packagist.phpcomposer.com (3)、阿里云composer镜像源https://mirrors.aliyun.com/composer (4)、腾讯云composer镜像源https://mirrors.cloud.tencent.com/composer (5)、华为云composer镜像源https://mirrors.huaweicloud.com/repository/php

April 24, 2023 · 1 min · jiezi

关于composer:ubuntu安装composer

1.下载composer.pharwget https://getcomposer.org/compo...1 2.重命名composer.phar为composermv composer.phar composer1 3.减少可执行权限chmod +x composer1 4.当初能够通过./composer 命令运行composer,但这只仅限于在当前目录运行。要想全局应用,composer ,要设置把它为全局变量。找到composer文件,把它移到/usl/local/bin 目录,这样就能够在全局应用composer 命令。sudo mv composer /usr/local/bin //有管理员权限的不必加sudo1 5.输出composer测试/:/ composer __ / _/ _ __ _ / / / / `__ / / / __/ / ___// /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/Composer version 1.7-dev (c2fbbe3b86788eb507a0f4f45f9fdc623ca579c4) 2018-03-29 21:36:46 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version ...

October 25, 2022 · 3 min · jiezi

关于composer:Ubuntu-安装Composer并全局配置国内镜像源

参考阿里巴巴开源镜像站 在装置Composer前咱们须要装置必要的依赖软件 sudo apt updatesudo apt install wget php-cli php-zip unzip 下载安装器装置composer wget -O composer-setup.php https://getcomposer.org/installer装置composer sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer实现 当初就能够应用composer了 查看更新 composer self-update 全局配置阿里镜像源 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

December 24, 2021 · 1 min · jiezi

关于composer:在centos7服务器上安装Composer

一、参考链接阿里巴巴开源镜像站   在centos7服务器上安装Composer 先装置扩大包 用阿里镜像比拟快 wget https://mirrors.aliyun.com/composer/composer.phar如图 可能须要批改权限 chmod 755 composer.phar 把composer.phar挪动到环境下让其变成可执行 mv composer.phar /usr/local/bin/composer 查看版本 composer -V 最初配置下阿里镜像源 全局配置 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/      

December 23, 2021 · 1 min · jiezi

关于composer:配置阿里云-Composer-全量镜像

一、参考链接阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 阿里云 Composer 全量镜像 Composer 中文网 / Packagist 中国全量镜像 (phpcomposer.com) PHP: Windows 下的 PHP 安装程序工具 - Manual Composer 装置与应用 | 菜鸟教程 (runoob.com) Packagist / Composer 中国全量镜像 (pkg.xyz) 二、Composer 全量镜像介绍Composer 是 PHP 的一个依赖管理工具。它容许你申明我的项目所依赖的代码库,它会在你的我的项目中为你装置他们。 三、阿里云 Composer 全量镜像安装操作1️ Windows零碎下装置PHP开发环境下载链接:PHP For Windows: Binaries and sources Releases 下载最新线程平安版PHP zip压缩包,解压缩后放在想要装置的门路下 2️测试PHP是否装置胜利C:\Users\xybdiy>php -vPHP 8.1.1 (cli) (built: Dec 15 2021 10:31:43) (ZTS Visual C++ 2019 x64)Copyright (c) The PHP GroupZend Engine v4.1.1, Copyright (c) Zend TechnologiesC:\Users\xybdiy>3️ 办法一:装置 Composer(取其一即可)Windows零碎下装置Composer-Setup.exe ...

December 21, 2021 · 2 min · jiezi

关于composer:使用版本管理创建composer私有库

一、背景多个我的项目有雷同代码   二、创立1、初始化一个裸仓 xxxx.git 2、git clone 到本地 3、在根目录下创立src目录,composer的一种格局标准,composer库的代码在该目录下开发 4、初始化composer配置,composer init 生成 composer.json,交互式【一路回车】生成一些配置和属性,也能够复制别的出名第三方库composer.json文件进行批改。最终如下, { "name": "galaxy/platform", "description": "xxxxxx库", "type": "library", "require": { "php":">=5.6" }, "license": "MIT", "autoload": { "psr-4": { "Galaxy\\": "src/" } }, "authors": [ { "name": "xxxxx", "email": "xxxxxx@qq.com" } ]}其中比拟重要的是require::库对环境的要求,以及领导不同的库的加载版本autoload:主动加载配置,这里应用psr-4标准,定义Galaxy作为跟命令空间,映射src目录 5、创立src/Traits/RpcTrait.php 其命名空间即为 Galaxy\Traits\RpcTrait 6、提交代码,推送版本   三、引入1、在我的项目代码的composer.json文件引入如下配置 "repositories": { "galaxy/platform": { "type": "git", "url": "xxxx.git" }}, 其中galaxy/platform是咱们自定义的包名,也是最初装置完的目录构造,vendor/galaxy/platform执行composer update 即可,实质是调用git clone或git pull配置的公有库仓库地址,获取代码笼罩vendor/galaxy/platform,所以这里是须要有克隆和拉取公有库代码的权限,如果仓库是ssh协定,则须要先密钥受权仓库是https或http协定,则须要登录凭证,也就是仓库托管平台的账号密码;如果是http还额定须要在composer.json减少配置【在config中减少"secure-http": false】 留神:默认拉取是master分支的最新版本,这里能够指定分支以及版本。通过以上操作后,composer.json会默认生成require配置【"galaxy/platform": "dev-master"】,其中key是包名,值是固定格局dev-{{分支}}#{{版本hash或标签}},如果咱们指定了某个版本。就会拉取指定版本的公有库代码,如图   四、应用像失常的库应用,如图   五、开发与迭代1、没有第三方依赖的代码,能够间接编码,在公有库我的项目中进行开发测试,这里能够在src目下建Tests目录,写测试用例,或者创立Demo目录,写调用示例; 2、有第三方依赖的代码,目前我不晓得如何间接在公有库我的项目中进行开发,不过我想到一种办法,先在业务我的项目代码中对公有库进行开发,开发测试通过后,将代码笼罩公有库本人的仓库代码进行提交推送,而后在业务我的项目代码,执行composer update   六、疑难1、有第三方依赖的公有库代码,是否有更好的开发方式?

November 9, 2021 · 1 min · jiezi

关于composer:composer-安装及使用

1、装置:composer的装置就不必多说了,官网下载 或者间接yum装置。 2、常用命令:1)配置为国内镜像仓库 composer config -g repo.packagist composer https://packagist.phpcomposer.com2)装置工具库 require/install /*composer require 包名 版本号,例如装置thinkphp*/composer require topthink/think5.0.0/*或者*/设置composer.json后执行 composer install3)卸载工具库remove/update /*composer remove 包名,例如 移除thinkphp(此命令用于移除依赖关系,文件需手动删除)*/composer remove topthink/think/*或者,composer update,此命令也可用于更新工具库的版本*/删除composer.json里包名的列表后执行 composer update4)创立我的项目create-project ,例如,基于thinkphp依赖创立名为tp5pro的我的项目: composer create-project topthink/think tp5pro --prefer-dist5)composer常用命令: composer init 以交互方式填写composer.json文件信息composer install 从当前目录读取composer.json文件,解决依赖关系,并装置到vendor目录下composer update 获取依赖的最新版本,降级composer.lock文件composer require 增加新的依赖包到composer.json文件中并执行更新composer search 在以后我的项目中搜寻依赖包composer show 列举所有可用的资源包composer validate 检测composer.json文件是否无效composer self-update 将composer工具更新到最新版本composer create-project 基于composer创立一个新的我的项目composer dump-autoload 在增加新的类和目录映射时更新autoloader查看更多:https://docs.phpcomposer.com/03-cli.htmlhttps://blog.csdn.net/lamp_yang_3533/article/details/802331563、可用包列表:可能很多刚接触composer工具的phper和我一样在纠结这个问题,composer里有哪些包能够装置,在哪看composer的全部包列表。 https://packagist.org 这个网站,如下图: 在这里间接关键字匹配搜寻即可~~~ 4、composer.json和composer.lock区别在应用composer后目录中会呈现2个文件,composer.lock和composer.json,当初来说说这两个文件的作用。 1)composer.json composer.json文件中保留的是咱们装置的组件及组件的版本要求。 2)comopser.lock composer.lock文件中保留的是组件及其依赖的具体版本,在多人协同开发的状况下,这个文件能很好的解决组件不同而产生的问题。在应用composer install的时候是不会批改composer.lock这个文件,所以会把这个文件也放入版本治理中,其它人在应用时只须要composer install就能够了。而应用composer update后批改这个文件。 综上所述: composer.lock这个文件次要是解决在协同开发中组件及其依赖的版本记录,避免不同人应用的组件及依赖版本不同。

October 28, 2021 · 1 min · jiezi

关于composer:composer-autoload自动加载性能优化-dumpautoload

composer 提供的 autoload 机制使得咱们组织代码和引入新类库十分不便,然而也使我的项目的性能降落了不少 。 composer autoload 慢的次要起因在于来自对 PSR-0 和 PSR-4 的反对,加载器失去一个类名时须要到文件系统里查找对应的类文件地位,能够看到 PSR-4 或者 PSR-0 的主动加载都是一件很累人的事儿。根本是个 O(n2) 的复杂度。另外有一大堆 is_file之类的 IO 操作所以性能堪忧。所以明天咱们就来聊聊composer主动加载的优化,聊之前咱们先来简略说一下composer主动加载的原理。以下是相干局部源码: <phpclass ClassLoader{ private $vendorDir; // PSR-4 private $prefixLengthsPsr4 = array(); private $prefixDirsPsr4 = array(); private $fallbackDirsPsr4 = array(); // PSR-0 private $prefixesPsr0 = array(); private $fallbackDirsPsr0 = array(); private $useIncludePath = false; private $classMap = array(); private $classMapAuthoritative = false; private $missingClasses = array(); private $apcuPrefix; private static $registeredLoaders = array(); public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; } /** * Finds the path to the file where the class is defined. * * @param string $class The name of the class * * @return string|false The path if found, false otherwise */ public function findFile($class) { // class map lookup if (isset($this->classMap[$class])) { return $this->classMap[$class]; } if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { return false; } if (null !== $this->apcuPrefix) { $file = apcu_fetch($this->apcuPrefix.$class, $hit); if ($hit) { return $file; } } $file = $this->findFileWithExtension($class, '.php'); // Search for Hack files if we are running on HHVM if (false === $file && defined('HHVM_VERSION')) { $file = $this->findFileWithExtension($class, '.hh'); } if (null !== $this->apcuPrefix) { apcu_add($this->apcuPrefix.$class, $file); } if (false === $file) { // Remember that this class does not exist. $this->missingClasses[$class] = true; } return $file; } private function findFileWithExtension($class, $ext) { // PSR-4 lookup $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; $first = $class[0]; if (isset($this->prefixLengthsPsr4[$first])) { $subPath = $class; while (false !== $lastPos = strrpos($subPath, '\\')) { $subPath = substr($subPath, 0, $lastPos); $search = $subPath . '\\'; if (isset($this->prefixDirsPsr4[$search])) { $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); foreach ($this->prefixDirsPsr4[$search] as $dir) { if (file_exists($file = $dir . $pathEnd)) { return $file; } } } } } // PSR-4 fallback dirs foreach ($this->fallbackDirsPsr4 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { return $file; } } // PSR-0 lookup if (false !== $pos = strrpos($class, '\\')) { // namespaced class name $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); } else { // PEAR-like class name $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; } if (isset($this->prefixesPsr0[$first])) { foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { if (0 === strpos($class, $prefix)) { foreach ($dirs as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } } } } // PSR-0 fallback dirs foreach ($this->fallbackDirsPsr0 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } // PSR-0 include paths. if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { return $file; } return false; }} ?>从源码中咱们看出,Compsoer\ClassLoader 会优先查看 autoload_classmap 中所有生成的注册类。如果在classmap 中没有发现再 fallback 到 psr-4 而后 psr-0。所以咱们就从classmap动手。 ...

September 23, 2021 · 3 min · jiezi

关于composer:composer-install-和updaterequire的使用

简略解释:composer install:如有 composer.lock 文件,间接装置,否则从 composer.json 装置最新扩大包和依赖;composer update:从 composer.json 装置最新扩大包和依赖;composer update vendor/package:从 composer.json 或者对应包的配置,并更新到最新;composer require new/package:增加装置 new/package, 能够指定版本,如: composer require new/package ~2.5.开发我的项目中应用流程:一、新我的项目流程:创立 composer.json,并增加依赖到的扩大包;运行 composer install,装置扩大包并生成 composer.lock;提交 composer.lock 到代码版本控制器中,如:git;二、我的项目协作者拉取我的项目 : 克隆我的项目后,根目录下间接运行 composer install 从 composer.lock 中装置 指定版本 的扩大包以及其依赖; 三、为我的项目增加新扩大包:应用 composer require new/package 增加扩大包;提交更新后的 composer.json 和 composer.lock 到代码版本控制器中,如:git;参考: composer install https://docs.phpcomposer.com/...composer update https://docs.phpcomposer.com/...

June 23, 2021 · 1 min · jiezi

关于composer:使用PSR4配合composer-autoload-自动加载文件夹

require 文件很麻烦,应用PSR-4搭配composer一次加载,终生受用。感觉相似java中的import了,本人先记录一下最近了解的。 用composer治理本人的包吧 装置composer 这个不多赘述 英文版教程 中文版教程 PSR-4标准PSR-4-autoloader 构建我的项目目录|-project |-src |-View.php |-app |-Tools.php |-composer.json 下面门路的View.php在project/src/View.php 中,其余同理,View 和 Tools 只是为了做演示用的。构建composer.json关上创立的composer.json文件输出,这里拿monolog做例子。 { "require": { "monolog/monolog": "1.2.*"}} 用composer加载包在目录所在的命令行中输出 #linux全局装置下应用该命令composer install#windows下应用参考后面的composer教程composer.phar install 加载结束之后你的目录应该是这样的 |-project |-src |-View.php |-app |-Tools.php |-vendor |-composer/* composer目录上面的文件不在赘述 |-monolog/* 同理 |-autoload.php |-composer.json |-composer.lock 测试加载的monolog包在project目录下创立一个index.php #index.php<?php/** * Created by PhpStorm. * User: EasyChris<chris@afox.cc> * Date: 2017/1/22 * Time: 10:50 *///引入autoload.php文件require_once 'vendor/autoload.php';//测试monlog$log = new MonologLogger('name');$log->pushHandler(new MonologHandlerStreamHandler('app.log', MonologLogger::WARNING));$log->addWarning('Foo');echo 'success'; 在浏览器外面拜访该文件地址,通常应该是http://127.0.0.1/project/index.php ...

November 12, 2020 · 1 min · jiezi

关于composer:Mac环境安装Composer

你能够在本人的我的项目中申明所依赖的内部工具库(libraries),Composer 会帮你装置这些依赖的库文件。 Composer也能够治理我的项目。总的来说Composer是一个基于PHP的版本控制、项目管理的工具。 英文官网:https://getcomposer.org/英文镜像:https://packagist.org中武官网:https://www.phpcomposer.com/中文镜像:https://pkg.phpcomposer.com/ 装置Composer装置Composer只须要做到两点 1、下载安装 composer.phar2、配置中文镜像 具体如下:1、全局装置,官网下载最新版本的 composer.phar2、验证,在文件目录执行 确保PHP可用且版本b大于5.6 php -vcomposer版本号和日期与官网统一即可 php composer.phar -v3、最初,设置成全局命令 mv composer.phar /usr/local/bin/composer到此已装置实现 4、接下来配置中文镜像 全局替换: composer config -g repo.packagist composer https://packagist.phpcomposer.com部分配置:(仅对当前目录无效) composer config repo.packagist composer https://packagist.phpcomposer.com上述命令将会在以后我的项目中的 composer.json 文件的开端主动增加镜像的配置信息(你也能够本人手工增加): "repositories": {     "packagist": {         "type": "composer",         "url": "https://packagist.phpcomposer.com"     } }以MongoDB拓展为例,在当前目录下减少composer.json文件,内容如下 {    "require": {        "monolog/monolog": "1.2.*"    }}执行上述命令后,变成 ...

November 8, 2020 · 1 min · jiezi

关于composer:phpstorm使用

1、win10环境搭建a.配置composer命令行环境下载php和composer、配置环境变量,方便使用composer环境:编写composer.bat @php "%~dp0composer.phar" config -g repo.packagist composer https://mirrors.aliyun.com/composer/b.vagrant装置环境初始化homestead环境 迅雷下载https://vagrantcloud.com/laravel/boxes/homestead/versions/10.0.0/providers/virtualbox.boxvagrant box add --name homestead/10.0 homestead_virtualbox.box

July 31, 2020 · 1 min · jiezi

关于composer:phpstorm使用

1、win10环境搭建a.配置composer命令行环境下载php和composer、配置环境变量,方便使用composer环境:编写composer.bat @php "%~dp0composer.phar" config -g repo.packagist composer https://mirrors.aliyun.com/composer/b.vagrant装置环境初始化homestead环境 迅雷下载https://vagrantcloud.com/laravel/boxes/homestead/versions/10.0.0/providers/virtualbox.boxvagrant box add --name homestead/10.0 homestead_virtualbox.box

July 31, 2020 · 1 min · jiezi

composer-win10在局域网通过代理上网的情况下无法安装包解决方案

两种办法,依据状况设置: 全局,设置(权限治理严格的状况下,用第二种) set http_proxy=http://代理网址set https_proxy=代理网址以后用户下设置环境变量: 配置实现后倡议重启命令工具后应用。

July 14, 2020 · 1 min · jiezi

composer镜像源更换为阿里云

官网: https://developer.aliyun.com/... 全局替换 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/composer clear-cache # 此步选择性操作,革除所有 package 缓存。以后我的项目替换 cd 我的项目目录composer config repo.packagist composer https://mirrors.aliyun.com/composer/

July 13, 2020 · 1 min · jiezi

如何实现一个属于自己的composer代码包

前言对于开发的小伙伴们来说,代码包已经是开发过程中的家常便饭了。比如,PHP有composer,Java有maven,前端有npm,yarn,Mac程序安装有brew,Linux程序安装有yum。使用这些包,可以便于我们很好的管理代码引入的外部代码组件,有助于我们提高开发效率,同时也有助于我们代码管理更加优雅。下文主要就是分享个人自定义一个composer代码包,代码仅仅是作为演示示例,没有实际效果。同时也会不断更新,大家可以关注关注。原文地址 具体实现创建一个远程git代码仓库。创建代码仓库,我是选择的GitHub作为远程仓库。创建好后,我们直接拉取到本地。后面的所有代码都是在该仓库下进行的。具体创建仓库和拉取代码就不做演示。 创建源码目录我们在仓库(为了方便描述,后文便用项目一词来替代该词)下面,创建一个src的目录,用于存储我们实际的代码。 编写实际代码下面这个文件,是后面实际需要调用的类。具体的演示代码,可以通过演示代码仓库进行查看。主要的作用就是利用工厂模式,Cache去调用实际的缓存类。 <?php// composer演示代码declare(strict_types=1);// 这里的命名空间根据自己情况填写,后面生成的composer.json文件需要使用该命名空间。namespace Bruce;use Bruce\Client\Redis;class Cache{ public $redisHandle = ''; public function __construct() { $this->redisHandle = new Redis(); }}创建好代码仓库中的所有文件,这时候我们就可以开始生成composer.json文件了。 生成composer.json配置文件下面就是具体生成的过程了,记住一定要在项目的根目录下面使用composer init命令。 composer initWelcome to the Composer config generatorThis command will guide you through creating your composer.json config.#项目命名空间Package name (<vendor>/<name>) [bruce_redis/redis]: bruce_redis/redis#项目描述Description []: composer test#作者信息Author [卡二条 <2665274677@qq.com>, n to skip]: 卡二条 <2665274677@qq.com>#输入最低稳定版本Minimum Stability []: dev#项目类型Package Type (e.g. library, project, metapackage, composer-plugin) []: library#授权类型License []: Define your dependencies.#依赖信息Would you like to define your dependencies (require) interactively [yes]? yes#如果需要依赖,则输入要安装的依赖Search for a package: phpEnter the version constraint to require (or leave blank to use the latest version): >=7.0Search for a package: Would you like to define your dev dependencies (require-dev) interactively [yes]? yesSearch for a package: phpEnter the version constraint to require (or leave blank to use the latest version): >=7.0Search for a package: { "name": "bruce_redis/redis", "description": "composer test", "type": "library", "require": { "php": ">=7.0" }, "require-dev": { "php": ">=7.0" }#确认构建项目,生成composer.jsonDo you confirm generation [yes]? yesWould you like the vendor directory added to your .gitignore [yes]? yesWould you like to install dependencies now [yes]? yesLoading composer repositories with package informationUpdating dependencies (including require-dev)Nothing to install or updateWriting lock fileGenerating autoload files这里需要注意一下<vendor>/<name>配置项根据composer中文网翻译的是供应商名称和项目名称。实际指的就是,你在其他项目中安装该composer包时,在你其他项目的vendor目录下面名称。例如,我将示例的代码的该配置项,设置为bruce_redis/redis。我再其他项目使用该包,展现的形式就是下图的效果。 ...

June 18, 2020 · 2 min · jiezi