PHPEncoder는 변수를 내보내고 내장 함수 var_export()
와 유사하게 해당 변수에 대한 PHP 코드 표현을 생성하기 위한 PHP 라이브러리입니다. 그러나 내장된 기능에 비해 이 라이브러리는 출력을 사용자 정의할 수 있는 더 많은 옵션을 제공하므로 읽기 가능한 구성 파일이나 최적화된 캐시 파일과 같은 다양한 목적을 위한 코드를 더 쉽게 생성할 수 있습니다.
이 라이브러리의 목적은 내장된 var_export()
의 일부 단점을 해결하는 것입니다. 예를 들어 출력에서 공백의 양을 제어할 수 있는 방법이 없으며 다양한 배열 표기법 중에서 선택할 수 있는 방법도 없습니다. 이 라이브러리는 또한 객체를 내장된 함수와 비교할 때 실제로 유용한 PHP 코드로 변환하는 기능을 제공합니다.
이 라이브러리에 있는 다양한 사용자 정의 옵션을 통해 목적에 맞는 코드를 생성할 수 있습니다. 출력 크기를 제한해야 하는 경우 매우 컴팩트한 코드를 생성하거나, 동적으로 생성된 PHP 파일에 실제로 맞는 스타일로 코드를 생성할 수 있습니다.
API 문서는 http://kit.riimu.net/api/phpencoder/에서 확인할 수 있습니다.
이 라이브러리를 설치하는 가장 쉬운 방법은 Composer를 사용하여 종속성을 처리하는 것입니다. Composer를 통해 이 라이브러리를 설치하려면 다음 두 단계를 따르십시오.
프로젝트 루트에서 Composer 명령줄 설치를 실행하여 composer.phar
을 획득합니다.
설치 스크립트를 실행한 후에는 프로젝트 루트에 composer.phar
파일이 있어야 하며 다음 명령을 실행할 수 있습니다.
php composer.phar require "riimu/kit-phpencoder:^2.3"
Composer를 통해 이 라이브러리를 설치한 후 설치 중에 Composer가 생성한 vendor/autoload.php
파일을 포함하여 라이브러리를 로드할 수 있습니다.
Composer 사용 방법에 이미 익숙하다면 프로젝트에 다음 composer.json
파일을 추가하고 composer install
명령을 실행하여 라이브러리를 종속성으로 추가할 수도 있습니다.
{
"require" : {
"riimu/kit-phpencoder" : " ^2.3 "
}
}
Composer를 사용하여 라이브러리를 로드하지 않으려면 최신 릴리스를 다운로드하고 프로젝트에 src
폴더를 추출하여 라이브러리를 수동으로 다운로드할 수도 있습니다. 그런 다음 제공된 src/autoload.php
파일을 포함하여 라이브러리 클래스를 로드할 수 있습니다.
이 라이브러리에서 제공하는 가장 관련성이 높은 메서드는 PHPEncoder
에서 제공하는 encode()
메서드입니다. 이 메서드는 모든 값을 인수로 사용하고 해당 값에 대한 PHP 코드 표현을 반환합니다.
예를 들어:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]]);
그러면 다음과 같은 출력이 생성됩니다.
[
'foo' => 'bar',
[1, true, false, null, 1.0],
]
물론 이 라이브러리의 가장 중요한 기능은 생성된 PHP 코드를 사용자 정의하는 기능입니다. 두 번째 인수로 encode()
메소드는 반환된 PHP 코드를 사용자 정의하는 데 사용할 수 있는 옵션 배열을 사용합니다. 예를 들어:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]], [
' array.inline ' => false ,
' array.omit ' => false ,
' array.indent ' => 2 ,
' boolean.capitalize ' => true ,
' null.capitalize ' => true ,
]);
그러면 다음과 같은 출력이 생성됩니다.
[
'foo' => 'bar',
0 => [
0 => 1,
1 => TRUE,
2 => FALSE,
3 => NULL,
4 => 1.0,
],
]
인코딩 옵션을 사용하면 encode()
메서드의 출력을 사용자 정의할 수 있습니다. 이러한 옵션은 세 가지 방법으로 설정할 수 있습니다.
PHPEncoder
생성자에 배열로 제공될 수 있습니다.setOption()
메서드를 통해 설정할 수 있습니다.encode()
메서드의 두 번째 인수로 배열로 전달될 수 있습니다. encode()
메서드에 전달된 옵션은 일시적일 뿐이며 다음 호출에는 적용되지 않습니다.
공백 : <부울> (참)
false
로 설정하면 모든 추가 공백 생성이 비활성화되고 공백에 영향을 미치는 다른 모든 설정이 무시됩니다.
hex.capitalize : <부울> (거짓)
true
로 설정하면 출력의 모든 16진수 문자가 소문자 대신 대문자를 사용하여 기록됩니다.
null.capitalize : <boolean> (거짓)
true
로 설정하면 모든 null
값이 소문자 대신 대문자로 기록됩니다.
boolean.capitalize : <boolean> (거짓)
true
로 설정하면 모든 true
및 false
값이 소문자 대신 대문자로 기록됩니다.
정수 유형 : <"이진수"|"8진수"|"십진수"|"16진수"> ("십진수")
정수의 출력 구문을 변경합니다. 예를 들어 "hexadecimal"
유형을 사용하면 숫자 15
가 0xf
로 출력됩니다.
float.integers : <boolean|"all"> (거짓)
true
로 설정하면 정수를 나타내고 부동 소수점 숫자로 정확하게 표현되는 값을 갖는 모든 부동 소수점은 부동 소수점 대신 정수로 인코딩됩니다. (예를 들어 값 2.0
은 2
로 인코딩됩니다). 정확하게 표현되지 않은 값을 포함하려면 옵션을 "all"
로 설정하면 됩니다.
float.export : <부울> (거짓)
true
로 설정하면 부동 소수점은 var_export()
사용하여 인코딩됩니다. 이는 표준 구현 방법과 비교하여 정수가 아닌 부동 소수점 숫자에 대해 약간 다른 출력을 발생시킵니다. 경우에 따라 더 정확한 숫자가 생성될 수 있지만 표현이 덜 명확해질 수 있습니다.
float.precision : <정수|false> (17)
인코딩된 부동 소수점 값의 최대 정밀도. 이는 일반적으로 인코딩된 부동 소수점의 최대 자릿수를 의미하기도 합니다. 값이 false
로 설정되면 PHP ini 설정 serialize_precision
대신 사용됩니다. 부동 소수점 값이 작동하는 방식으로 인해 17보다 큰 값은 추가 정밀도를 제공하지 않습니다.
string.binary : <boolean> (거짓)
true
로 설정하면 유효한 UTF-8이 아닌 모든 문자열이 Base 64로 인코딩되고 base64_decode()
호출로 래핑됩니다.
string.escape : <boolean> (참)
true
로 설정하면 32-126 ASCII 범위 밖의 바이트를 포함하는 모든 문자열은 큰따옴표로 쓰여지고 범위 밖의 문자는 이스케이프됩니다.
string.utf8 : <boolean> (거짓)
이 옵션과 string.escape
모두 true
로 설정되면 문자열의 모든 유효한 멀티바이트 UTF-8 문자는 PHP7 유니코드 코드 포인트 구문을 사용하여 인코딩됩니다. 이 구문은 7.0 이전 PHP 버전에서는 작동하지 않습니다.
string.classes : <string[]> ([])
문자열에서 발견될 때 클래스 확인 연산자 ::class
사용하여 인코딩할 수 있는 클래스에 대한 클래스 네임스페이스 접두사 또는 클래스 목록을 정의합니다. 예를 들어 ['Riimu\']
값을 제공하면 RiimuKitPHPEncoder::class
와 같은 Riimu
네임스페이스의 클래스 이름처럼 보이는 모든 문자열이 인코딩됩니다.
string.imports : <string[]> ([])
더 짧은 형식을 사용하여 클래스 이름을 작성할 수 있도록 하는 결과 코드 파일에 사용되는 가져오기 목록입니다. 목록은 네임스페이스나 클래스를 키로, 사용된 이름을 값으로 갖는 연관 배열이어야 합니다. 빈 문자열을 사용하여 현재 네임스페이스를 나타냅니다.
예를 들어, 결과 파일에 namespace RiimuKitPHPEncoder;
use PHPUnitFrameworkTestCase;
, 배열을 ['Riimu\Kit\PHPEncoder\' => '', 'PHPUnit\Framework\TestCase' => 'TestCase']
로 설정할 수 있습니다.
array.short : <부울> (참)
true
로 설정하면 긴 배열 표기법 array()
대신 대괄호 []
사용하여 배열을 묶습니다.
array.base : <정수|문자열> (0)
공백 수 또는 문자열로 된 배열의 기본 들여쓰기입니다. 특정 수준의 들여쓰기를 사용하여 파일에 코드를 출력해야 할 때 편리함을 제공합니다.
array.indent : <정수|문자열> (4)
단일 수준의 들여쓰기에 대한 들여쓰기 양(공백 수 또는 문자열)입니다.
array.align : <부울> (거짓)
true
로 설정하면 배열 할당 연산자 =>
가 공백을 사용하여 동일한 열에 정렬됩니다. 활성화된 경우에도 array.omit
및 array.inline
옵션은 여전히 존중되지만 특정 배열의 모든 키를 생략할 수 있는 경우에만 해당됩니다.
array.inline : <부울|정수> (70)
true
로 설정하면 배열 키 없이 작성할 수 있는 모든 배열이 한 줄에 작성됩니다. 대신 정수가 제공되면 해당 문자 수를 초과하지 않는 경우에만 배열이 단일 라인으로 작성됩니다. array.omit
false로 설정된 경우 이 옵션은 효과가 없습니다.
array.omit : <부울> (참)
true
로 설정하면 중복된 배열 키가 포함되지 않습니다(예: 배열 [0 => 'a', 1 => 'b']
는 ['a', 'b']
처럼 인코딩됨).
array.eol : <string|false> (거짓)
배열 출력에 사용되는 줄 끝 문자입니다. false
로 설정하면 기본 PHP_EOL
대신 사용됩니다.
object.method : <boolean> (참)
true
로 설정하면 인코딩된 모든 객체에서 toPHP()
및 toPHPValue()
메서드를 확인합니다. toPHP()
메소드가 존재하는 경우, 반환된 문자열은 객체의 PHP 코드 표현으로 사용됩니다. toPHPValue()
메소드가 대신 존재하는 경우, 반환된 값은 PHP로 인코딩되어 객체의 코드 표현으로 사용됩니다.
object.format : <string> ('vars')
기본 개체 인코딩 형식입니다. 가능한 값은 다음과 같습니다.
string
객체를 string으로 캐스팅한 다음 해당 문자열을 PHP로 인코딩합니다.serialize
객체를 직렬화하고 unserialize()
로 래핑합니다.export
var_export()
객체 표현을 모방합니다.array
객체를 배열로 캐스팅하고 해당 배열을 인코딩합니다.vars
get_object_vars()
사용하여 객체를 배열로 바꿉니다.iterate
foreach
를 사용하여 객체를 반복하여 객체를 배열로 바꿉니다. object.cast : <boolean> (참)
객체 인코딩 형식 vars
, array
또는 iterate
사용할 때 객체에서 생성된 배열 앞에 (object)
캐스트를 추가할지 여부입니다.
recursion.Detect : <boolean> (참)
true
로 설정하면 인코더는 무한 루프를 피하기 위해 배열과 객체에서 순환 참조를 감지하려고 시도합니다.
recursion.ignore : <부울> (거짓)
true
로 설정하면 모든 순환 참조가 예외를 발생시키는 대신 null
로 대체됩니다.
recursion.max : <정수|false> (거짓)
배열 및 객체를 인코딩할 때 최대 수준 수입니다. 최대값을 초과하면 예외가 발생합니다. 제한이 없도록 하려면 false
로 설정하세요.
이 라이브러리의 저작권은 (c) 2013-2022 Riikka Kalliomäki입니다.
라이센스 및 복사 정보는 LICENSE를 참조하세요.