Hi all,
So I am creating a yii module as a stand-alone composer package. So the package has a composer.json file in it’s root which requires yiisoft/yii
## package composer.json <simplified>
{
"name": "myvendor/mypackage",
"require":{
"yiisoft/yii" : "1.1.*"
}
}
If I git clone my package repository and run "composer install", a vendor folder is created under my packages root which has yiisoft/yii in it. Which is fine.
## dir structure
<package_root>/
<package_root>/vendor/
<package_root>/vendor/yiisoft/yii/
etc
However if my packages is used as a dependency of something else (say, I have a project that want’s to require this stand-alone package), then composer will create a vendor folder at the root of the project with both yii and my package next to each other.
# project composer.json <simplified>
{
"require":{
"myvendor/mypackage"
}
}
## dir structure
<project_root>/
<project_root>/vendor/
<project_root>/vendor/myvendor/mypackage
<project_root>/vendor/yiisoft/yii
So for my package code, yii can be in one of two places relative to it
a) Inside it (at <package_root>/vendor/yiisoft/yii)
Next to it ( at <project_root>/vendor/yiisoft/yii)
Now my code in the package needs to know the location of Yii in order to require() bits of it. For example, the tests need to require yiit.php.
# bootstrap.php
require( ...... path to yiit );
Yii::createApplication(...)
Can anyone give me any advice on how to handle this? I don’t really want to have to check in 2+ places every time I need to require a Yii file
Cheers