2016-08-26 13 views
-1

我是PHP新手,不太熟悉使用git。如何在php中使用自動加載器

我得到了這個庫:

https://github.com/CKOTech/checkout-php-library

,我想在這裏運行示例代碼:

https://github.com/CKOTech/checkout-php-library/wiki/Tokens

我知道代碼可能不適合你很好地工作,因爲你需要但是,我不需要像「無法找到類ApiClient」的一般錯誤

我所做的只是簡單地在我的index.php文件中包含自動加載器,這就是我使用自動加載器所需做的一切嗎?它是否必須對composer.json做任何事情?

非常感謝您的幫助。

Autoloader.php:

<?php 
function autoload($className) 
{ 

    $baseDir = __DIR__; 
    $realClassName = ltrim($className, '\\'); 
    $realClassName = str_replace('\\',DIRECTORY_SEPARATOR,$realClassName); 
    $fileName = ''; 
    $includePaths = $baseDir.DIRECTORY_SEPARATOR.$realClassName. '.php'; 

    if ($file = stream_resolve_include_path($includePaths)) { 
     if (file_exists($file)) { 
      require $file; 
     } 

    }elseif(preg_match('/^\\\?test/', $className)) { 
     $fileName = preg_replace('/^\\\?test\\\/', '', $fileName); 
     $fileName = 'test' . DIRECTORY_SEPARATOR . $fileName; 
     include $fileName; 

    } else { 
     $classNameArray = explode('_', $className); 
     $includePath = get_include_path(); 
     set_include_path($includePath); 

     if (!empty($classNameArray) && sizeof($classNameArray) > 1) { 

      if (!class_exists('com\checkout\packages\Autoloader')) { 
       include 'com'.DIRECTORY_SEPARATOR.'checkout'.DIRECTORY_SEPARATOR.'packages'.DIRECTORY_SEPARATOR.'Autoloader.php'; 
      } 
     } 
    } 

} 


spl_autoload_register('autoload'); 

回答

0

如果您想使用自動加載磁帶機使您的生活更可測量:

  1. 使用namespaces/PSR4。使用Composer

所以我們可以說我的工作FOO項目,我的工作目錄內[讓我們只說這是/]我做了一個名爲/src/文件夾,裏面是/src/FooClient.php。它包含:

<?php 
namespace sammitch\foo; 

class FooClient {} 

雖然/我跑composer init並接受所有默認值,因爲打字了簡單的JSON配置文件生成是乏味的。現在我有一個composer.json看起來像:

{ 
    "name": "Sammitch/foo", 
    "authors": [ 
     { 
      "name": "Sammitch", 
      "email": "[email protected]" 
     } 
    ], 
    "require": {} 
} 

現在我們需要做的就是添加一個節末尾:

"autoload": { 
    "psr-4": { 
     "sammitch\\foo\\": "src/" 
    } 
} 

我們讓作曲家做它的魔力,讓磁帶自動加載機只需運行composer dumpautoload。運行時,Composer將創建/vendor/文件夾和自動加載器。

現在我們需要做的是:

<?php 
require('vendor/autoload.php'); 
use \sammitch\foo\Client as FooClient() 

$c = new FooClient(); 

現在你不僅有頂級的自動加載,但是你也設置了開始使用作曲家包,並利用所有的好東西,從Packagist