When developing a new composer package you will want to test it locally before uploading it to Packagist.
First create a composer.json file for your package, here's an example the important part is the autoload psr-4 which sets the namespace path and secondingly the relative source path.
{
"name": "name of the package",
"description": "short description",
"autoload": {
"psr-4": {
"Daveismyname\\PdoWrapper\\": "/src"
}
},
"minimum-stability": "dev"
}
The above example will autoload from a src folder, for this example I have a Database class stored in a namespace of Daveismyname\PdoWrapper this matches the path in composer.json
<?php
namespace Daveismyname\PdoWrapper;
use PDO;
class Database extends PDO
{
}
Now to use this the namespace would be imported and then the class can be called.
require('vendor/autoload.php');
use Daveismyname\PdoWrapper\Database;
$db = new Database();
So far this is the starting process for building a package but to actually test it another project is required.
Create a folder to run this from ideally in the parent folder so both the project folder and the package folder are on the same level.
Next create a composer.json file, add the vendor/package name to require and autoload it, to make it work add a repositories array and pass in the local path to the package. This lets composer load the package from the local file system instead of from Packagist.
{
"name": "dc/demo",
"description": "",
"require": {
"daveismyname/pdo-wrapper": "@dev"
},
"autoload": {
"psr-4": {
"Daveismyname\\PdoWrapper\\": "src/"
}
},
"repositories": [
{
"type": "path",
"url": "../pdo-wrapper-master"
}
]
}
Run composer install
Now the class can be used like any other for example:
require('vendor/autoload.php');
use Daveismyname\PdoWrapper\Database;
$db = Database();
Subscribe to my newsletter for the latest updates on my books and digital products.
Find posts, tutorials, and resources quickly.
Subscribe to my newsletter for the latest updates on my books and digital products.