- Posted on
- Comments 0
Bitbucket Repository with Composer
Hi all,
In this article , you will find a tutorial about , how to use github or bitbucket repositories with composer.
Create Your Repository
Most important thing in this step, we will use the repository name in composer.json. I used “blog/tutorial” as a package name. I prefer to use bitbucket and at the below code copied from bitbucket repository page, following commands will init git repository to your local folder.
mkdir /path/to/your/project cd /path/to/your/project git init git remote add origin git@bitbucket.org:yourname/blog-tutorial.git
Create Composer.json
Now, i defined a composer properties like , package name , description , authors , requirements etc.. For more information about composer.json please check Composer Basic Usage
Note: When you finished to edit “composer.json” , dont forget to run
composer validate
{
"name": "mtigdemir/blog-tutorial",
"description": "Muharrem Tigdemir Blog Tutorial Package",
"authors": [
{
"name": "Muharrem Tığdemir",
"email": "muharrem.tigdemir@gmail.com"
}
],
"require": {
"php": ">=5.4",
},
"require-dev": {
"phpunit/phpunit": "~4.6"
},
"autoload": {
"psr-4": {
"Mtigdemir\\Blog\\": "src/"
}
}
}
As you can see, I’ve defined autoload psr-4 property with namespace “Mtigdemir\\Blog\\”
!IMPORTANT! PSR-0 is deprecated , and PSR-4 standarts show us where to place files that will be autoloaded according to the specification. For more information about PSR-4 please check PHP Framework Interop Group
<?php namespace Mtigdemir\Blog;
// File must be under src directory
class User
{
private $username;
private $email;
public function __constructor($username , $email){
$this->username = $username;
$this->email = $email;
}
public function getEmail(){
return $this->email;
}
public function getUsername(){
return $this->username;
}
}
Let’s create a User.class in src/ directory with Mtigdemir\Blog namespace. Your package is ready to use with User class lets push it !
It’s time to include our package into the project
First of all, we have to include our repository to new project at the below composer.json definition is my new project and I included “git@bitbucket.org:mtigdemir/blog-tutorial.git” to my repositories.
Note : if you are using private repository. You have add your ssh-key to bitbucket!
{
"name" : "mtigdemir/blog-tutorial-project",
"description" : "Blog Tutorial Project",
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:mtigdemir/blog-tutorial.git"
}
],
"require": {
"php": ">=5.4",
}
}
composer search mtigdemir
This composer command will find “mtigdemir” packages including my private repository , as a result composer will find our package name and description if everything is cool you will see this kind of result in command line about your package definition: “mtigdemir/blog-tutorial Blog tutorial Package”
composer info mtigdemir/blog-tutorial
What about version ! I didn’t release any version , in that case if you pushed develop or master branch your requirement version will change that’s why composer info is very useful. My package version is “dev-master”
name : mtigdemir/blog-tutorial descrip. : Blog tutorial Package keywords : versions : dev-master type : library source : [git] git@bitbucket.org:mtigdemir/blog-tutorial.git f37affd9a2f1500a4ff956aa727304ce66af951b dist : [] names : mtigdemir/blog-tutorial autoload psr-4 Bumin\Psp\Account\ => src/ requires php >=5.4 requires (dev) phpunit/phpunit ~4.6
Now , you can add your package like at the below or add package to composer.json and update it !
composer require mtigdemir/blog-tutorial:dev-master
Finally, I’m able to use my class in project — Yea only User Class user.php :((
Your package will be under vendor/ directory like other packages from packagist.org.
<?php
require "vendor/autoload.php";
$user = new \Mtigdemir\Blog\User("muharrem" , "muharrem.tigdemir@gmail.com");
echo $user->getUserName().'__'.$user->getEmail();
I’m able to use my User Class with namespace ,
I want to thank to my team-mate Aykut Aras for share with me all about this know-how..
Muharrem Tığdemir