Birinci hissədə qeyd etdiyim kimi bu yazımda “config” qovluğunda serləşən faylları izah etməyə çalışacam. Mən burada 3 fayl saxlayıram:

app/config/config.php

<?php
ini_set('display_errors', true);
date_default_timezone_set('Asia/Baku');

$config_array = array(
	'database' => array(
		'adapter'	 => 'Mysql',	 // İstifadə edəcəyimiz baza növü
		'host'		 => 'localhost', // Bazanın yerləşdiyi xost
		'username'	 => 'blablabla', // Bazaya qoşulmaq üçün istifadəçi adı
		'password'	 => 'blablabla', // Bazaya qoşulmaq üçün şifrə
		'dbname'	 => 'blablabla', // Bazanın adı
		'charset'	 => 'utf8',		 // Bazanın simvol sinfi, yaxşısı həmişə utf8 olsun ki, bir neçə dildə məlumat yerləşdirəndə problem olmasım
		'prefix'	 => 'mb_',		 // Cədvəllərin prefiksi. Kiçik sistemlərdə böyük bir əhəmiyyəti olmasa da, özünüzdə prefikslə işləmə vərdişi yaradın.
	),
	'application' => array(
		'controllersDir' => __DIR__ . '/../../app/controllers/',
		'modelsDir'		 => __DIR__ . '/../../app/models/',
		'viewsDir'		 => __DIR__ . '/../../app/views/',
		'pluginsDir'	 => __DIR__ . '/../../app/plugins/',
		'traitsDir'		 => __DIR__ . '/../../app/traits/',
		'filesDir'		 => __DIR__ . '/../../app/files/',		// Sistemdə istifadə olunacaq fayllar burada yerləşəcək (misal üçün watermark faylı)
		'publicDir'	 	 => __DIR__ . '/../../public/',
		'uploadsDir'	 => __DIR__ . '/../../public/uploads/', // İstifadəçilər üçün yüklənəcək fayllar bu qovluğa düşəcək
		'logDir'		 => __DIR__ . '/../../logs/',
		'tmpDir'		 => __DIR__ . '/../../tmp/',
		'baseUri'		 => '/',								// Sistemin əsas səhifəsi
	)
);

if ($_SERVER['HTTP_HOST'] == '127.0.0.1') {	// Mən bu hissəni lokal kompüterdə işləmək üçün istifadə edirəm, belə ki, lokal kompüter və ya xostinqdə config faylda dəyişiklik etməmək üçün əla üsuldur ;)
	$config_array['database']['username']	= 'blablabla';
	$config_array['database']['password']	= 'blablabla';
	$config_array['database']['dbname']	  = 'blablabla';

	$config_array['application']['baseUri'] = '/eviminichi.com/';
}

return new \Phalcon\Config($config_array);

app/config/loader.php

<?php
$loader = new \Phalcon\Loader();

/*
* Sistemdə tez-tez müraciət edəcəyimiz qovluqları rahatlıq üçün namespace olaraq qeydiyyatdan keçiririk
*/
$loader->registerNamespaces(
	array(
		'App\Controllers'	 => $config->application->controllersDir,
		'App\Models'		 => $config->application->modelsDir,
		'App\Traits'		 => $config->application->traitsDir,
		'App\Plugins'		 => $config->application->pluginsDir
	)
)->register();

app/config/services.php

<?php
use Phalcon\DI\FactoryDefault;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;

use Phalcon\Mvc\View as View;
use Phalcon\Mvc\Url as Url;

use Phalcon\Mvc\Dispatcher as Dispatcher;

$di = new FactoryDefault();

$di->set('config', $config);

$di->set('dispatcher', function() {
	$dispatcher = new Dispatcher();

	return $dispatcher;
}, true);

$di->set('url', function () use ($config) {
	$url = new Url();
	$url->setBaseUri($config->application->baseUri);

	return $url;
}, true);

$di->set('view', function() use ($config) {
	$view = new View();
	return $view;
});

$di->set('db', function () use ($config) {
	$dbadapter = new DbAdapter(array(
		'host' => $config->database->host,
		'username' => $config->database->username,
		'password' => $config->database->password,
		'dbname' => $config->database->dbname,
		"charset" => $config->database->charset
	));

	return $dbadapter;
});

Bu konfiqurasiya fayllarını uyğun yerə yazdıqdan sonra sistemi işə salmaq lazımdır. Bu isə public qovluğundakı index.php faylı vasitəsilə baş verir.

public/index.php

error_reporting(E_ALL);

try {
	$config = include __DIR__ . "/../app/config/config.php";
	include __DIR__ . "/../app/config/loader.php";
	include __DIR__ . "/../app/config/services.php";

	$application = new \Phalcon\Mvc\Application($di);

	echo $application->handle()->getContent();

} catch (\Exception $e) {
	echo $e->getMessage();
}

Amma bu index.php faylının işə düşməsi üçün baş qovluqda və public qovluğunda htaccess faylına ehityac var.

.htaccess

#########################
# sistemə olan bütün müraciətləri public ünvanına qovluğuna yönləndirir
#########################
<IfModule mod_rewrite.c>
	RewriteEngine on
	RewriteRule ^$ public/		[L]
	RewriteRule (.*) public/$1	[L]
</IfModule>

public/.htaccess

AddDefaultCharset UTF-8

#########################
# müraciətləri index.php faylına yönəldir
#########################
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

Növbəti dərsə faylları github-a yerləşdirəcəyəm ki, kod tam şəkildə əlinizin altında olsun. Yazı ilə bağlı sual və fikirlərinizi şərhdə bildirməyinizi rica edirəm. Sizin aktivliyiniz mənim aktivliyimə təsir edəcək ;)

Comments

comments