PHP CLI 개발 소개
12853 단어 cliprogrammingphptutorial
YouTube에서 보기
이 튜토리얼은 깊이 있는 내용은 아니지만 CLI 및 PHP 개발을 시작하는 데 도움이 될 것입니다.
CLI에서 실행할 코드:
php index.php {postID or NULL} {-c or NULL} {true or null|false}
폴더 구조
index.php
autoload.php
/src/Data.php
클래스용 오토로더 설정
이 자습서에서는 OOP를 사용할 것이므로 자동 로더를 설정하겠습니다. 이 파일은 index.php 파일에서 사용할 클래스와 메소드를 가져올 것입니다. 이전에 이 파일을 더 자세히 설명하는 자습서를 만들었습니다. 더 많은 정보를 원하시면 여기에서 찾을 수 있습니다:
autoload.php
<?php
spl_autoload_register(function ($class){
$prefix = 'App\\';
$base_dir = __DIR__ . '/src/';
$len = strlen($prefix);
if(0 != strncmp($prefix, $class, $len)) {
return;
}
$relative_class = substr($class, $len);
$file = $base_dir. str_replace('\\','/', $relative_class) . '.php';
if(file_exists($file)) {
require $file;
}
});
index.php 생성
CLI에서 모든 것이 작동하도록 하려면 코드를 실행할 파일을 만들어야 합니다. 기본적으로 자습서 시작 부분에서 CLI 명령을 사용할 것이므로 index.php를 사용할 수 있는지 확인해야 합니다. 원하는 파일이나 경로를 사용할 수 있지만 이 자습서에서는 기본 CLI 파일에 index.php를 사용합니다.
이 파일에서 CLI 변수를 수집하여 컨트롤러 메서드에 전달합니다. 이 페이지는 매우 중요하며 변수의 존재 여부를 확인할 뿐만 아니라 올바른 형식으로 전달되는지 확인해야 합니다.
index.php
<?php
// php index.php {postID or null} {-c or null} {true or null|false}
use App\Data;
require_once 'autoload.php';
$postID = (isset($argv[1]) ? (int) $argv[1] : 0); // int
$displayComments = isset($argv[2]) && $argv[2] === '-c' ? true : false; // flag -> false
$displayArr = isset($argv[3]) && $argv[3] === 'true' ?: false; //bool
// test dump of variables
var_dump((new Data($postID, $displayComments, $displayArr))->displayData());
// send data to API
var_dump((new Data($postID, $displayComments, $displayArr))->getAPI());
데이터 컨트롤러 설정
간단한 더미 API를 사용하여 데이터를 가져올 것입니다. 무료이며 이를 사용하여 코드를 테스트하거나 자체 API로 변경할 수 있습니다.
이 클래스에서는 index.php CLI 인터페이스에서 변수를 전달합니다. 변수를 설정하고 올바른 데이터가 포함되어 있는지 확인해야 합니다.
src/Data.php
<?php
namespace App;
class Data {
/**
* Post ID
*
* @var int
*/
private $postID;
/**
* Display comments
*
* @var bool
*/
private $displayComments;
/**
* Parse JSON as array or object
*
* @var bool
*/
private $displayArr;
public function __construct(int $postID = null, bool $displayComments, bool $displayArr){
$this->postID = $postID;
$this->displayComments = $displayComments;
$this->displayArr = $displayArr;
}
/**
* Sample function to display CLI data
*
* @return array
*/
public function displayData(){
return [
'postID'=>$this->postID,
'displayComments'=> $this->displayComments,
'displayArr'=>$this->displayArr
];
}
/**
* Send data to a sample API and return a response
*
* @return array|object
*/
public function getAPI(){
// setup API URL for the dummy "Blog" API
$apiURL = 'https://jsonplaceholder.typicode.com/posts';
// Modify the API URL if a post ID is added
$postID = ($this->postID != 0 ? '/'.$this->postID : '');
// Modify the API URL if comments are added
$displayComments = ($this->displayComments ? '/comments' : '');
// get the JSON from the API using file_get_contents
$json = file_get_contents($apiURL.$postID.$displayComments);
// either push API results as JSON or as PHP Array
$res = ($this->displayArr === true ? json_decode($json, true) : $json);
return $res;
}
}
결론
이제 CLI에 대한 모든 코드가 있으므로 선택한 CMD, Powershell, 터미널 또는 CLI에서 다음 명령을 실행할 수 있습니다.
php index.php {postID or NULL} {-c or NULL} {true or null|false}
일단 실행하면 내 코드를 사용하고 있다면 API에서 결과를 볼 수 있습니다. 모든 블로그 기사 또는 주석이 있는 단일 기사와 JSON 또는 배열 형식. 행운을 빕니다. CLI 개발에 대한 관심이 최고조에 달하기를 바랍니다.
Reference
이 문제에 관하여(PHP CLI 개발 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thedevdrawer/php-cli-development-introduction-3b6i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)