3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPのcomposer,オートロード(autoload),名前空間(namespace)について

Last updated at Posted at 2022-04-12

composerとは

PHPのライブラリを管理するツールです。
これを使うことによって別のファイルを読み込む時にオートロード(自動クラス読み込み)
してくれる便利なツールです。

詳しい説明は下の記事にあります。
https://qiita.com/atwata/items/d6f1cf95ce96ebe58010

composerの導入

composerは公式サイトからダウンロードができます。
Macの場合は

$ brew install composer

でインストールできます。とは言っても公式サイトは見る習慣は大事だと思います。

下の写真は2022/4/22現在

スクリーンショット 2022-04-12 11.22.25.png

上記のコマンドを実行した後に、lsコマンドでターミナルで確認すると、
composer.pharがあると思います。

composerのバージョンを確認します。

$ composer --version

でバージョンを確認できます。これでcomposerが導入されました。

確認できたらこのコマンドを使います。

$ sudo mv composer.phar /usr/local/bin/composer

パスワードが聞かれますが、これはPCのパスワードです。

MAMPはすでに導入されていること前提で話します。

$ cd /Applications/MAMP/htdocs

でhtdocsに入った後、ディレクトリを作成し移動します。

$ mkdir composer_test
$ cd composer_test 

次にcomposer.jsonファイルを作成します。

composer_test$ composer init

でエンターとyesをおし続けます。
わからなければcomposer initを下のサイトから調べてください。
https://www.webdesignleaves.com/pr/php/php_composer.php

するとcomposer.jsonのファイルができます。

composer_test/composer.json
{
    "name": "省略/composer_test",
    "autoload": {
        "psr-4": {
            "省略\\ComposerTest\\": "src/"
        }
    },
    "authors": [
        {
            "name": "省略",
            "email": "省略"
        }
    ],
    "require": {}
}

省略には自分の名前やメールアドレスが入ります。

この後オートロードするために書き換えます。

composer_test/composer.json
{
    "autoload":{
        "psr-4": {
            "App\\" : "app/"
        }
    }
    
}
composer_test $ composer install

composerがインストールされVScodeを見てみると変化していると思います。
autoloadのファイルなどがあると思います。

composerの内容を更新する時は

$ composer update
$ composer dump-autoload

で更新がかかったりします。

⚫︎公式サイト

名前空間(namespace)

名前空間(namespace)とはここからここまでが名前の空間に属していると定めます。
なぜこれが必要かというと、同じ関数名をPHPでは使うことができないからです。
他にもクラスやインターフェースも利用できないみたいです。

空間が違えば、同じ関数名を定義して使うことができるので名前空間を使います。

namespaceの使い方

<?php
namespace 名前空間名;

で定義することができます。

useの使い方

useとは名前空間の拡張機能でクラスや関数などをインポートする時に使います。

use [名前空間または一部クラス関数など] as 別名称

名前空間を使う

実際に名前空間を使って出力させました。

Training_Model.php
<?php
namespace App\Models;

class Training_Model 
{
  private $text = "PHPの学習"; //変数

  public function getStudy(){
      return $this->text;
  }
}

Training_Controller.php
<?php

namespace App\Controllers;//Appのコントローラーの名前空間

use App\Models\Training_Model; //useを使う Training_Modelインポートする

class Training_Controller
{
   public function run(){
       $model = new Training_Model;//インスタンス化
       echo $model->getStudy();
   }
}
index.php
<?php

require_once __DIR__ . "/vendor/autoload.php";
    //読み込み //__DIR__そのファイルの存在するディレクトリのこと
    //venderフォルダの中のautoload.php

use App\Controllers\Training_Controller;  
//TestController読み込み

$app = new Training_Controller;
$app->run();

//PHPの学習 と出力

composerのライブラリ

composerを使う上でライブラリを使います。

その中でCarbonという日付を操作するライブラリがあります。

$ composer require nesbot/carbon

でインストールできます。

vender/composer.json

{
    "autoload":{PHPの学習2022-04-12 09:22:01
        "psr-4": {
            "App\\" : "app/"
        }
    },
    "require": {   //追加
        "nesbot/carbon": "^2.57"
    }
}

requireの部分が追加されます。

日付指定です。これはイギリスの時間です。

index.php
use Carbon\Carbon;

echo Carbon::now();
//2022-04-12 09:22:01

日本の東京にするなら

index.php
use Carbon\Carbon;

echo Carbon::now("Asia/Tokyo");   
//2022-04-12 18:25:20

になります。

index.php
use Carbon\Carbon;
echo Carbon::create(2022, 4, 22, 10, 20, 30);
//日付作成

資料

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?