CakePHP Projesi Oluştur ve Çalıştır
CakePHP Nedir?
CakePHP, geliştiricilerin web uygulamalarını hızlı bir şekilde oluşturmasına yardımcı olan açık kaynaklı bir PHP web çatısıdır. MVC (Model-View-Controller) mimarisi üzerine inşa edilmiştir ve veri tabanı etkileşimi, form işlemleri, kimlik doğrulama ve oturum yönetimi gibi geliştirme sürecindeki yaygın görevleri kolaylaştıran güçlü bir araç seti sağlar.
CakePHP'nin Ana Özellikleri ve Avantajları
- Hızlı Geliştirme: Yaygın kod yapıları oluşturmayı hızlandıran zengin kod üretim araçları sağlar.
- Esnek ve Güçlü ORM: Yerleşik ORM (Nesne-İlişki Haritalama) katmanı veri tabanı işlemlerini basitleştirir.
- Güvenlik: Giriş doğrulama, CSRF koruması ve SQL enjeksiyon koruması gibi çeşitli güvenlik özellikleri içerir.
- Topluluk Desteği: Aktif bir topluluğu ve zengin bir eklenti ekosistemi vardır.
- İyi Belgelendirme: Geliştiricilerin hızlı bir şekilde başlamasına yardımcı olacak ayrıntılı belgeler ve öğreticiler sunar.
CakePHP, küçük uygulamalardan büyük kurumsal sistemlere kadar çeşitli projeler için uygundur ve geliştiricilere yüksek kaliteli web uygulamaları oluşturma konusunda hızlı bir yol sunar.
ServBay Kullanarak CakePHP Projesi Oluşturma ve Çalıştırma
Bu makalede, ServBay'in sağladığı PHP ortamını kullanarak bir CakePHP projesi oluşturup çalıştıracağız. Web sunucusunu kurmak için ServBay’in 'host' işlevini kullanacağız ve basit bir yapılandırma ile projeye erişimi sağlayacağız.
Dikkat: Daha önce NGINX veya Apache kullandıysanız
ServBay varsayılan olarak Web sunucusu olarak Caddy'yi kullanır. NGINX ve Apache'den ServBay'a geçiş yapan kullanıcılar için dikkat edilmesi gereken bazı önemli değişiklikler vardır:
Caddy Yapılandırması
ServBay, dahili olarak Caddy’yi içerir ve varsayılan yapılandırma optimize edilip test edilmiştir. Geliştiriciler, sitelerini yönetmek için sadece ServBay'in 'host' işlevini kullanarak manuel olarak Caddy yapılandırma dosyalarını değiştirmelerine gerek yoktur.
Rewrite Kuralları ve .htaccess
NGINX ve Apache'de geliştiriciler genellikle URL yeniden yazma ve diğer yapılandırmaları işlemek için kendi kendilerine Rewrite kuralları ve .htaccess dosyaları yazarlar. Ancak, ServBay fabrika ayarlarıyla birlikte gelen Caddy kurallarını zaten yapılandırmış olduğundan, özel ihtiyaçlar dışında geliştiricilerin bu kuralları yazmalarına gerek yoktur.
Daha Fazla Bilgi
Daha fazla bilgi için Rewrite ve htaccess, Apache siteleri nasıl ServBay'a taşınır, NGINX siteleri nasıl ServBay'a taşınır kılavuzlarına göz atabilirsiniz.
CakePHP Projesi Oluşturma
TIP
ServBay, geliştiricilere sitelerini yönetmeyi kolaylaştırmak için sitelerini /Applications/ServBay/www
dizinine koymalarını önerir.
Composer Kurulumu
ServBay, composer ile birlikte gelir, bu nedenle ayrıca kurulum yapmanıza gerek yoktur.
CakePHP Projesi Oluşturma
Composer kullanarak yeni bir CakePHP projesi oluşturun:
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4Proje Dizine Girme
Yeni oluşturduğunuz CakePHP proje dizinine girin:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Yapılandırma Başlatma
Ortam Değişkenlerini Yapılandırma
config/app_local.php
dosyasında veri tabanı 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:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
Web Sunucusunu Yapılandırma
CakePHP projesine Web sunucusu aracılığıyla erişmek için ServBay'in 'host' işlevini kullanın. ServBay'in 'host' ayarlarında yeni bir host ekleyin:
- Adı:
My First CakePHP Dev Site
- Alan Adı:
servbay-cakephp-test.local
- Site Türü:
PHP
- PHP Sürümü:
8.3
sürümünü seçin - Site Kök Dizini:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Detaylı kurulum adımları için İlk Sitesizi Eklemek kılavuzuna başvurabilirsiniz.
Örnek Kod Ekleme
config/routes.php
dosyasına aşağıdaki kodu ekleyin, "Hello ServBay!" çıktı verecektir:
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
src/Controller/PagesController.php
dosyasına aşağıdaki kodu ekleyin:
namespace App\Controller;
use Cake\Http\Response;
class PagesController extends AppController
{
public function display()
{
return new Response(['body' => 'Hello ServBay!']);
}
}
2
3
4
5
6
7
8
9
10
11
Siteye Erişim
Tarayıcıyı açın ve https://servbay-cakephp-test.local
adresine gidin, web sayfasında Hello ServBay!
çıktısını göreceksiniz.
NoSQL Veritabanı Örneği
Memcached Örneği
Memcached Eklentisi Kurulumu
ServBay'de, Memcached eklentisi önceden yüklüdür, ekstra kurulum gerekmemektedir.
Memcached Yapılandırması
config/app_local.php
dosyasında Memcached bağlantı bilgilerini yapılandırın:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Rota Yapılandırması
config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Memcached Kullanımı
Kontrolör dosyasında cache kullanın:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function memcached() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Memcached!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Tarayıcıyı açın,
https://servbay-cakephp-test.local/memcached
adresine gidin.
Redis Örneği
Redis Eklentisi Kurulumu
ServBay'de, Redis eklentisi önceden yüklüdür, ekstra kurulum gerekmemektedir.
Redis Yapılandırması
config/app_local.php
dosyasında Redis bağlantı bilgilerini yapılandırın:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Rota Yapılandırması
config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Redis Kullanımı
Kontrolör dosyasında cache kullanın:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function redis() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Redis!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Tarayıcıyı açın,
https://servbay-cakephp-test.local/redis
adresine gidin.
İlişkisel Veritabanı Örneği
Veritabanı Şeması ve Göç Dosyası Oluşturma
Göç Dosyası Oluşturma
CakePHP'nin Bake aracını kullanarak göç dosyası oluşturun:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Göçü Çalıştırma
CakePHP komutunu kullanarak göçü çalıştırın ve veritabanı tablolarını oluşturun:
bashbin/cake migrations migrate
1
MySQL Örneği
MySQL Yapılandırması
config/app_local.php
dosyasında MySQL bağlantı bilgilerini yapılandırın:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9Rota Yapılandırması
config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2User Tablosu Ekleme
Aşağıdaki kodu
src/Model/Table/UsersTable.php
dosyasına kaydedin.php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Kullanıcı Verilerini Yazma
Kontrolörde kullanıcı verilerini yazın:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function mysqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function mysql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => 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
25Tarayıcıyı açın,
https://servbay-cakephp-test.local/mysql-add
vehttps://servbay-cakephp-test.local/mysql
adresine gidin.
PostgreSQL Örneği
PostgreSQL Yapılandırması
config/app_local.php
dosyasında PostgreSQL bağlantı bilgilerini yapılandırın:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'driver' => Postgres::Class, 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
10Rota Yapılandırması
config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2User Tablosu Ekleme
Aşağıdaki kodu
src/Model/Table/UsersTable.php
dosyasına kaydedin.php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Kullanıcı Verilerini Yazma
Kontrolörde kullanıcı verilerini yazın:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function pgsqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function pgsql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => 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
25Tarayıcıyı açın,
https://servbay-cakephp-test.local/pgsql-add
vehttps://servbay-cakephp-test.local/pgsql
adresine gidin.
Yukarıdaki adımları izleyerek, bir CakePHP projesi oluşturdunuz ve çalıştırdınız, aynı zamanda ServBay'in sağladığı özellikleri kullanarak projenizi yönettiniz ve çeşitli veritabanlarına bağlandınız.