2 min read

Phalcon ile Composer Kullanımı

PHP framework dünyasının en popüler framework’lerinden biri olan phalcon için bu yazıda composer autoload kullanımını nasıl yapabiliriz kısaca bahsetmeyece çalışacağım.

Standart bir phalcon projesi başlattıysanız projenizin kök dizininde “app”, “cache”, “public” dizinlerinizin olması gerekli. Eğer farklı bir şekilde kurulum gerçekleştirdiyseniz, yukarıdaki söylediğim standartlara göre kendi projenize göre uyarlarsınız.

Projemizin kök dizininde herhangi bir paket composer vasıtasıyla kurduysak veya özel autoload yapımızı oluşturduysak artık projemizin kök dizininde standart olarak “vendor” dizini olması gerekmekte. Bu “vendor” dizininin içerisinde ise “autoload.php” dosyası olduğunu görüyorsak her şey yolunda demektir.

Phalcon içerisinde kendi loader yapısı bulunmakta. Bu loader yapısı sayesinde özel sınıflarınızı yükleyip çağırabilirsiniz ancak bunun dışında third-party kütüphaneleri kurmak istediğimizde imdadımıza composer yetişeceği için bu noktada bize composer yardımcı olacaktır.

Öncelikle phalcon config dosyasına vendor dizinimizin tam yolunu ekleyelim. “app/config/config.php” dosyasını açalım ve aşağıdaki gibi düzenleyelim;

<?php
/*
 * Modified: prepend directory path of current file, because of this file own different ENV under between Apache and command line.
 * NOTE: please remove this comment.
 */
defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');

return new \Phalcon\Config([
    'database' => [
        'adapter'     => 'Mysql',
        'host'        => 'localhost',
        'username'    => 'root',
        'password'    => '',
        'dbname'      => 'db',
        'charset'     => 'utf8',
    ],
    'application' => [
        'appDir'         => APP_PATH . '/',
        'controllersDir' => APP_PATH . '/controllers/',
        'modelsDir'      => APP_PATH . '/models/',
        'migrationsDir'  => APP_PATH . '/migrations/',
        'viewsDir'       => APP_PATH . '/views/',
        'pluginsDir'     => APP_PATH . '/plugins/',
        'libraryDir'     => APP_PATH . '/library/',
        'cacheDir'       => BASE_PATH . '/cache/',
        // Aşağıdaki satırı ekleyerek "vendor" klasörümüzün yolunu tanımlamış olduk.
        "vendorDir"      => BASE_PATH . '/vendor/',

        // This allows the baseUri to be understand project paths that are not in the root directory
        // of the webpspace.  This will break if the public/index.php entry point is moved or
        // possibly if the web server rewrite rules are changed. This can also be set to a static path.
        'baseUri'        => preg_replace('/public([\/\\\\])index.php$/', '', $_SERVER["PHP_SELF"]),
    ]
]);

Artık config dosyamızda vendor dizini nerede olduğunu tanımladık. Sıra geldi bu vendor içinde bulunan autoload.php dosyasını loader ile yüklemeye. “app/config/loader.php” dosyasını açalım ve aşağıdaki satırı ekleyelim;

<?php

$loader = new \Phalcon\Loader();

$loader->registerFiles([$config->application->vendorDir . '/autoload.php']);
$loader->registerDirs(
    [
        $config->application->controllersDir,
        $config->application->modelsDir
    ]
)->register();

İşaretli olan 5.satır ile daha demin config içerisinde tanımladığımız vendor dizininde bulunan autoload.php dosyasını register ettik. Böylelikle app ilk ayağa kalktığı anda controller, model vb. dosyalarla birlikte composer autoload.php dosyasını da yüklemiş olacak.

Artık her şey hazır. 🙂