PHP code example of bojaghi / continy

1. Go to this page and download the library: Download bojaghi/continy library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

bojaghi / continy example snippets


/**
 * Plugin Name: My plugin
 * Description: ...
 * ... 
 */

f ( !function_exists( 'myPlugin' ) ) {
    /**
     * Wrapper function
     * 
     * @return \Bojaghi\Continy\Continy
     * @throws \Bojaghi\Continy\ContinyException
     * @throws \Bojaghi\Continy\ContinyNotFoundException
     */
    function myPlugin(): Bojaghi\Continy\Continy {
        static $continy = null;
        
        if (is_null($continy)) {
            $continy = Bojaghi\Continy\ContinyFactory::create(__DIR__ . '/conf/setup.php');
        }
        
        return $continy;
    }
}

if (!function_exists('myPluginGet')) {
    /**
     * @template T
     * @param class-string<T> $id
     *
     * @return T|object|null
     */
    function myPluginGet(string $id)
    {
        try {
            $instance = myPlugin()->get($id);
        } catch (\Bojaghi\Continy\ContinyException|\Bojaghi\Continy\ContinyNotFoundException $e) {
            $instance = null;
        }

        return $instance;
    }
}

// 플러그인 시동하기
myPlugin();

// create() 부분만 예시로 듭니다.
// 옵션 #1: 설정 파일이 있는 경로 지정하기
$continy = Bojaghi\Continy\ContinyFactory::create(__DIR__ . '/conf/setup.php');

// 옵션 #2: 직접 설정을 배열로 넣기
$continy = Bojaghi\Continy\ContinyFactory::create(
    [
        'main_file' => __FILE__,
        'version'   => '1.0.0',
        // ...
    ],
);

/**
 * 설정 파일의 예시
 */
if (!defined('ABSPATH')) {
    exit;
}

return [
    'main_file' => dirname(__DIR__) . '/index.php', // 플러그인 메인 파일
    'version'   => '1.0.0',                         // 플러그인의 버전
    
    /**
     * 훅 선언
     * 
     * 키: 훅 이름
     * 값: 콜백 함수에서 허용하는 인자 수, 0 이상의 정수 
     */
    'hooks' => [
        'admin_init' => 0,
        'init'       => 0,
    ],
    
    /**
     * 바인딩 선언
     *
     * 키: 별명 (alias)
     * 값: 실제 클래스 (FQCN)
     */
    'bindings' => [
        'myModule'  => MyModule::class,
        'foo'       => Foo::class,
        IBar::class => BarImpl::class, 
    ],
      
    /**
      * 클래스 의존성 주입 선언
      *
      * 키: 별명, 또는 FQCN
      * 값: 배열, 또는 함수 - 함수는 배열을 리턴해야 함 
      */
    'arguments' => [
        'myModule' => ['p1' => 'X', 'p2' => 'Y'],
        'foo'      => function (Continy $continy) { return ['p1' => 'X', 'p2' => 'Y']; },
    ],  
      
    /**
     * 모듈 선언
     */  
    'modules' => [
        // 1.0.2 부터 지원하는 언더스코어 모듈: Continy 가 인스턴스화 될 때 바로 실행되는 모듈.
        // 우선순위 키는 사용하지 않습니다.
        '_' => [
            IBar::class,
        ],
        // 훅 이름
        'init' => [
            // 모듈 우선순위 
            Continy::PR_DEFAULT => [
                // 모듈 목록
                'myModule',
                'foo',
            ],
        ],
        // 혹 이름, 모듈 우선순위, 모듈의 목록 ...  
    ],
];