facebook twitter hatena line email

「Php/composer/psr-4」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(サンプル)
 
(同じ利用者による、間の3版が非表示)
行3: 行3:
  
 
==composer.jsonに以下追加==
 
==composer.jsonに以下追加==
  "autoload": {
+
{
    "psr-4": {
+
    "autoload": {
      "myapp\\": "src/"
+
      "psr-4": {
    }
+
        "myapp\\": "src/"
  }
+
      }
 +
    }
 +
}
  
 
==composer更新==
 
==composer更新==
行15: 行17:
 
以下のようにrequire_once不要で読み込める
 
以下のようにrequire_once不要で読み込める
  
src/MainLogic.php
+
src/MainService.php
 
  namespace myapp;
 
  namespace myapp;
  class MainModel
+
  class MainService
 
  {
 
  {
 
     public function execLogic()
 
     public function execLogic()
 
     {
 
     {
           $sub = new SubModel();
+
           $sub = new SubService();
 
           $sub->execLogic();
 
           $sub->execLogic();
 
     }
 
     }
 
  }
 
  }
  
src/SubLogic.php
+
src/SubService.php
 
  namespace myapp;
 
  namespace myapp;
  class SubModel
+
  class SubService
 
  {
 
  {
 
     public function execLogic()
 
     public function execLogic()
 
     {
 
     {
 
     }
 
     }
 +
}
 +
 +
==外部クラス読み込み==
 +
{
 +
    "autoload": {
 +
        "classmap": [
 +
            "database",
 +
            "/var/www/html/Hoge"
 +
        ],
 +
        "psr-4": {
 +
            "App\\": "app/"
 +
        }
 +
    },
 
  }
 
  }

2018年3月2日 (金) 17:52時点における最新版

psr-4とは

クラスをオートローディングするための仕様

composer.jsonに以下追加

{
    "autoload": {
      "psr-4": {
        "myapp\\": "src/"
      }
    }
}

composer更新

$ composer update

サンプル

以下のようにrequire_once不要で読み込める

src/MainService.php

namespace myapp;
class MainService
{
    public function execLogic()
    {
         $sub = new SubService();
         $sub->execLogic();
    }
}

src/SubService.php

namespace myapp;
class SubService
{
    public function execLogic()
    {
    }
}

外部クラス読み込み

{
   "autoload": {
       "classmap": [
           "database",
           "/var/www/html/Hoge"
       ],
       "psr-4": {
           "App\\": "app/"
       }
   },
}