Phalcon Projesi Oluşturun ve Çalıştırın
Phalcon Nedir?
Phalcon, C uzantısı şeklinde implemente edilmiş yüksek performanslı bir PHP framework’üdür ve olağanüstü yürütme verimliliği sunar. MVC (Model-View-Controller) mimarisini benimseyerek geliştiricilere hızlı, esnek ve yüksek performanslı bir geliştirme deneyimi sunmayı amaçlar.
Phalcon’un Temel Özellikleri ve Avantajları
- Yüksek Performans: Phalcon, C uzantısı şeklinde implemente edildiği için olağanüstü performans sağlar.
- Zengin Özellikler: ORM, şablon motoru, yönlendirme, önbellekleme, kuyruk gibi birçok özellik sunar.
- Düşük Bellek Tüketimi: Benzersiz uygulama şekli sayesinde Phalcon, çalışma zamanında çok az bellek tüketir.
- Kullanım Kolaylığı: Basit ve kullanımı kolay API’lar ve net dokümantasyon sunar.
- Modüler Tasarım: İhtiyaca göre çeşitli bileşenleri seçip kullanma esnekliği sağlar.
Phalcon, yüksek performanslı web uygulamaları ve API'ler oluşturmak için ideal bir seçimdir. Küçük uygulamalardan büyük kurumsal sistemlere kadar birçok proje için uygundur.
ServBay Kullanarak Phalcon Projesi Oluşturma ve Çalıştırma
Bu yazıda, Phalcon projesi oluşturmak ve çalıştırmak için ServBay’in sunduğu PHP ortamını kullanacağız. ServBay’in ‘Hosting’ özelliğini kullanarak web sunucusunu ayarlayacak ve basit bir yapılandırma ile projeye erişim sağlayacağız.
Dikkat: Daha önce NGINX veya Apache kullanıcıysanız
ServBay varsayılan olarak Caddy web sunucusunu kullanır. NGINX ve Apache’den ServBay’e geçiş yapan kullanıcılar için bazı önemli değişiklikler vardır:
Caddy Yapılandırması
ServBay, Caddy’i yerleşik olarak içerir ve varsayılan yapılandırma zaten optimize edilmiş ve test edilmiştir. Geliştiriciler, Caddy yapılandırma dosyasını manuel olarak değiştirmek zorunda kalmazlar.
Rewrite Kuralları ve .htaccess
NGINX ve Apache’de geliştiriciler genellikle URL yeniden yazma ve diğer yapılandırmalar için Rewrite kuralları ve .htaccess dosyalarını kendileri yazar. Ancak, ServBay, Caddy kurallarını önceden yapılandırılmış olarak sunar, bu nedenle özel gereksinimler olmadıkça geliştiricilerin bu kuralları yazmalarına gerek yoktur.
Daha Fazla Bilgi
Daha fazla bilgi için Rewrite ve .htaccess, Apache’den ServBay’e Geçiş, NGINX’den ServBay’e Geçiş konularını inceleyin.
Dikkat: Phalcon Modülünü Etkinleştirme
ServBay, yerleşik Phalcon modülünü içermektedir. Kullanıcıların önce bu modülü etkinleştirip PHP’yi yeniden başlatmaları gerekir. ServBay’de Phalcon Modülünü Etkinleştirme konusunu inceleyin.
Farklı Phalcon ve DevTools Sürümleri
Farklı PHP sürümlerine göre farklı Phalcon DevTools sürümleri yüklemeniz gerekmektedir:
- PHP 5.6, 7.0, 7.1: Phalcon 3.4.5
- Karşılık gelen Phalcon DevTools sürümü:
3.4.x
- Karşılık gelen Phalcon DevTools sürümü:
- PHP 7.2, 7.3, 7.4: Phalcon 4.1.2
- Karşılık gelen Phalcon DevTools sürümü:
4.3.x
- Karşılık gelen Phalcon DevTools sürümü:
- PHP 8.0, 8.1, 8.2, 8.3, 8.4: Phalcon 5.7.0
- Karşılık gelen Phalcon DevTools sürümü:
5.0.x
(Resmi DevTools, PHP 8.x için iyi desteklenmediğinden, düzeltme sürümü kullanılmalıdır)
- Karşılık gelen Phalcon DevTools sürümü:
Phalcon Projesi Oluşturma
TIP
ServBay, geliştiricilere sitelerini /Applications/ServBay/www
dizininde tutmalarını önerir.
Composer Yükleme
ServBay, Composer’ı yerleşik olarak içerir, ayrıca yüklenmesine gerek yoktur.
Proje Dizini Oluşturma
Proje dizini oluşturup içine girin:
bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3Phalcon DevTools Yükleme
PHP sürümüne göre uygun Phalcon DevTools’u yükleyin:
PHP 5.6, 7.0, 7.1:
bashcomposer require phalcon/devtools:"^3.4"
1PHP 7.2, 7.3, 7.4:
bashcomposer require phalcon/devtools:"~4.1"
1PHP 8.0, 8.1, 8.2, 8.3, 8.4:
composer.json
dosyası oluşturup aşağıdaki içeriği ekleyin
{
"repositories": [
{
"url": "https://github.com/daleffe/phalcon-devtools-5.x-fixed.git",
"type": "git"
}
],
"require": {
"phalcon/devtools": "dev-master"
},
"minimum-stability": "dev",
"prefer-stable": true
}
2
3
4
5
6
7
8
9
10
11
12
13
Ardından şu komutu çalıştırın
composer update
Phalcon Projesi Oluşturma
Phalcon DevTools kullanarak yeni bir Phalcon projesi oluşturun:
bashvendor/bin/phalcon project servbay-phalcon-app
1Proje Dizinine Girin
Yeni oluşturulan Phalcon proje dizinine girin:
bashcd servbay-phalcon-app
1
Başlangıç Ayarları
Ortam Değişkenlerini Yapılandırma
app/config/config.php
dosyasında veritabanı bağlantı bilgilerini ve diğer ortam değişkenlerini yapılandırın. Aşağıdaki yapılandırmanın doğru olduğundan emin olun:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9
Web Sunucusunu Yapılandırma
ServBay’in ‘Hosting’ özelliğini kullanarak Phalcon projesine web sunucusu üzerinden erişin. ServBay’in ‘Hosting’ ayarlarında yeni bir host ekleyin:
- İsim:
My First Phalcon Dev Site
- Domain:
servbay-phalcon-test.local
- Web Site Türü:
PHP
- PHP Versiyonu: Uygun PHP versiyonunu seçin
- Web Root Dizini:
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
Ayrıntılı adımlar için İlk Web Sitesi Eklemek konusunu inceleyin.
Örnek Kod Ekleme
app/config/routes.php
dosyasına aşağıdaki kodu ekleyin, "Hello ServBay!" çıktısı vermek için:
$router->add(
'/',
[
'controller' => 'index',
'action' => 'index',
]
);
2
3
4
5
6
7
app/controllers/IndexController.php
dosyasına aşağıdaki kodu ekleyin:
namespace App\Controllers;
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{
echo 'Hello ServBay!';
}
}
2
3
4
5
6
7
8
9
10
11
Web Sitesini Ziyaret Etme
Tarayıcıyı açın ve https://servbay-phalcon-test.local
adresine gidin, Hello ServBay!
çıktısını göreceksiniz.
NoSQL Veritabanı Örnekleri
Memcached Örneği
Memcached Eklentisini Yükleme
Memcached eklentisi ServBay'de önceden yüklenmiştir, ekstra yükleme gerekmez.
Memcached Yapılandırma
app/config/config.php
dosyasına Memcached bağlantı bilgilerini ekleyin:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], 'cache' => [ 'adapter' => 'Memcached', 'host' => '127.0.0.1', 'port' => 11211, ], ]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14Routing Yapılandırması
app/config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$router->add( '/memcached', [ 'controller' => 'index', 'action' => 'memcached', ] );
1
2
3
4
5
6
7Memcached Kullanma
Kontrolcüde önbelleği kullanma:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Cache\Backend\Memcached; use Phalcon\Cache\Frontend\Data as FrontData; class IndexController extends Controller { public function memcachedAction() { $frontCache = new FrontData([ 'lifetime' => 86400 ]); $cache = new Memcached($frontCache, [ 'host' => '127.0.0.1', 'port' => 11211, ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Memcached!'; $cache->save($cacheKey, $cachedData); } echo $cachedData; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Tarayıcıyı açın ve
https://servbay-phalcon-test.local/memcached
adresine gidin.
Redis Örneği
Redis Eklentisini Yükleme
Redis eklentisi ServBay'de önceden yüklenmiştir, ekstra yükleme gerekmez.
Redis Yapılandırma
app/config/config.php
dosyasına Redis bağlantı bilgilerini ekleyin:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], 'cache' => [ 'adapter' => 'Redis', 'host' => '127.0.0.1', 'port' => 6379, ], ]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14Routing Yapılandırması
app/config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] );
1
2
3
4
5
6
7Redis Kullanma
Kontrolcüde önbelleği kullanma:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Cache\Backend\Redis; use Phalcon\Cache\Frontend\Data as FrontData; class IndexController extends Controller { public function redisAction() { $frontCache = new FrontData([ 'lifetime' => 86400 ]); $cache = new Redis($frontCache, [ 'host' => '127.0.0.1', 'port' => 6379, ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Redis!'; $cache->save($cacheKey, $cachedData); } echo $cachedData; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Tarayıcıyı açın ve
https://servbay-phalcon-test.local/redis
adresine gidin.
İlişkisel Veritabanı Örnekleri
Veritabanı Yapısını ve Göç Dosyasını Oluşturma
Göç Dosyası Oluşturma
Phalcon DevTools kullanarak göç dosyası oluşturun:
bashvendor/bin/phalcon migration generate --directory=servbay-phalcon-app
1Göç Dosyasını Düzenleme
migrations
dizininde yeni bir göç dosyası oluşturun ve veritabanı tablosu yapısını tanımlamak için düzenleyin:phpuse Phalcon\Db\Column; use Phalcon\Db\Index; use Phalcon\Migrations\Mvc\Model\Migration; class UsersMigration_100 extends Migration { public function morph() { $this->morphTable('users', [ 'columns' => [ new Column( 'id', [ 'type' => Column::TYPE_INTEGER, 'autoIncrement' => true, 'notNull' => true, 'primary' => true, ] ), new Column( 'name', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, ] ), new Column( 'email', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, 'unique' => true, ] ), ], 'indexes' => [ new Index('PRIMARY', ['id'], 'PRIMARY'), new Index('email_UNIQUE', ['email'], 'UNIQUE'), ], ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44Göçü Çalıştırma
Phalcon DevTools komutunu kullanarak göç dosyasını çalıştırın ve veritabanı tablosunu oluşturun:
bashvendor/bin/phalcon migration run --directory=servbay-phalcon-app
1
MySQL Örneği
MySQL Yapılandırma
app/config/config.php
dosyasında MySQL bağlantı bilgilerini yapılandırın:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9Routing Yapılandırması
app/config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$router->add( '/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ] ); $router->add( '/mysql', [ 'controller' => 'index', 'action' => 'mysql', ] );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Kullanıcı Verilerini Yazma
Kontrolcüde kullanıcı verilerini yazma:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; class IndexController extends Controller { public function mysqlAddAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $success = $connection->insert( 'users', ['ServBay', '[email protected]'], ['name', 'email'] ); echo $success ? 'Kullanıcı eklendi' : 'Kullanıcı eklenemedi'; } public function mysqlAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $users = $connection->fetchAll('SELECT * FROM users', \Phalcon\Db\Enum::FETCH_ASSOC); echo json_encode($users); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39Tarayıcıyı açın ve
https://servbay-phalcon-test.local/mysql-add
vehttps://servbay-phalcon-test.local/mysql
adreslerine gidin.
PostgreSQL Örneği
PostgreSQL Yapılandırma
app/config/config.php
dosyasında PostgreSQL bağlantı bilgilerini yapılandırın:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Postgresql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9Routing Yapılandırması
app/config/routes.php
dosyasına aşağıdaki kodları ekleyin:php$router->add( '/pgsql
1
2