CakePHP Projesi Oluşturma ve Çalıştırma
CakePHP Nedir?
CakePHP, geliştiricilerin web uygulamalarını hızlı bir şekilde oluşturmasına yardımcı olmak için tasarlanmış açık kaynaklı bir PHP web framework'dür. MVC (Model-View-Controller) mimarisine dayalıdır ve veritabanı etkileşimi, form işleme, kimlik doğrulama ve oturum yönetimi gibi yaygın geliştirme görevlerini basitleştiren güçlü bir araç seti sunar.
CakePHP'nin Temel Özellikleri ve Avantajları
- Hızlı Geliştirme: Geliştiricilerin yaygın kod yapıları hızlı bir şekilde oluşturmasına yardımcı olan zengin kod üretim araçları sunar.
- Esnek ve Güçlü ORM: Dahili ORM (Object-Relational Mapping) katmanı veritabanı işlemlerini basitleştirir.
- Güvenlik: Giriş doğrulama, CSRF koruması ve SQL enjeksiyon önleme gibi dahili güvenlik özellikleri.
- Topluluk Desteği: Aktif topluluk ve zengin bir eklenti ekosistemi.
- İyi Dokümantasyon: Geliştiricilerin hızlı bir şekilde başlamasına yardımcı olmak için kapsamlı dokümantasyon ve öğreticiler sağlar.
CakePHP, küçük uygulamalardan büyük kurumsal sistemlere kadar değişen projelere uygundur ve geliştiricilerin yüksek kaliteli web uygulamalarını hızlı bir şekilde oluşturmasına yardımcı olur.
ServBay Kullanarak CakePHP Projesi Oluşturma ve Çalıştırma
Bu makalede, ServBay tarafından sağlanan PHP ortamını kullanarak bir CakePHP projesi oluşturup çalıştıracağız. ServBay'in "Host" özelliğini bir web sunucusu kurmak ve projeyi basit ayarlarla erişim için yapılandırmak amacıyla kullanacağız.
::: uyarı NGINX veya Apache Kullandıysanız Dikkat: ServBay varsayılan olarak web sunucusu olarak Caddy kullanır. NGINX ve Apache'den ServBay'e geçiş yapan kullanıcılar için dikkat edilmesi gereken bazı önemli değişiklikler vardır:
Caddy Yapılandırması
ServBay, Caddy ile önceden kurulmuş ve yapılandırılmış olarak gelir. Geliştiricilerin Caddy yapılandırma dosyasını manuel olarak düzenlemeksizin siteleri ServBay'in "Host" özelliği aracılığıyla yönetmeleri yeterlidir.
Yeniden Yazma Kuralları ve .htaccess
NGINX ve Apache'de, geliştiriciler genellikle URL yeniden yazma ve diğer yapılandırmaları yönetmek için kendi yeniden yazma kurallarlarını ve .htaccess dosyalarını yazarlar. Ancak, ServBay zaten optimize edilmiş Caddy kurallarını kutudan çıkar çıkmaz sağlar, bu yüzden özel gereksinimler olmadıkça bu kuralları yazmak gerekmez.
Daha Fazla Bilgi Edinin
Daha fazla bilgi için Yeniden Yazma ve htaccess, Apache Sitesini ServBay'e Taşıma ve NGINX Sitesini ServBay'e Taşıma belgelerine bakın.
:::
CakePHP Projesi Oluşturma
::: ipucu ServBay, geliştiricilerin web sitelerini daha kolay yönetim için /Applications/ServBay/www
dizinine yerleştirmesini önerir. :::
Composer Yükleyin
ServBay, Composer önceden yüklü olarak geldiğinden, ayrı bir kurulum gerekmemektedir.
Bir CakePHP Projesi Oluşturun
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 Dizini Girin
Yeni oluşturulan CakePHP proje dizinine gidin:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
İlk Yapılandırma
Ortam Değişkenlerini Yapılandırma
config/app_local.php
dosyasında veritabanı bağlantı bilgilerini ve diğer ortam değişkenlerini yapılandırın. Aşağıdaki ayarların doğru şekilde ayarlandığından 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 üzerinden erişmek için ServBay'in "Host" özelliğini kullanın. ServBay'in Host ayarlarında, yeni bir host ekleyin:
- Ad:
My First CakePHP Dev Site
- Domain:
servbay-cakephp-test.local
- Web Sitesi Türü:
PHP
- PHP Versiyonu:
8.3
seçin - Web Sitesi Kök Dizini:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Ayrıntılı kurulum adımları için İlk Web Sitesini Ekleme kılavuzuna başvurun.
Örnek Kod Ekleyin
config/routes.php
dosyasına "Hello ServBay!" çıktısını almak için aşağıdaki kodu ekleyin:
$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
Web Sitesine Erişim
Bir tarayıcı açın ve https://servbay-cakephp-test.local
adresine gidin ve sayfanın Hello ServBay!
çıktısını görüntülediğini görün.
NoSQL Veritabanlarıyla Örnek
Memcached Örneği
Memcached Uzantısını Yükleyin
Memcached uzantısı ServBay'de önceden yüklü olarak geldiğinden, ek bir kurulum gerekmez.
Memcached'i Yapılandırma
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
6Rotaları Yapılandırma
config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Memcached Kullanın
Kontrolörde önbelleği 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
17Bir tarayıcı açın ve
https://servbay-cakephp-test.local/memcached
adresine gidin
Redis Örneği
Redis Uzantısını Yükleyin
Redis uzantısı ServBay'de önceden yüklü olarak geldiğinden, ek bir kurulum gerekmez.
Redis'i Yapılandırma
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
7Rotaları Yapılandırma
config/routes.php
dosyasına aşağıdaki kodu ekleyin:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Redis Kullanın
Kontrolörde önbelleği 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
17Bir tarayıcı açın ve
https://servbay-cakephp-test.local/redis
adresine gidin
İlişkisel Veritabanı Örneği
Veritabanı Şeması ve Migration Dosyaları Oluşturma
Migration Dosyaları Oluşturma
CakePHP'nin Bake aracını kullanarak migration dosyaları oluşturun:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Migration Çalıştırma
Migration'ları çalıştırmak ve veritabanı tablolarını oluşturmak için CakePHP komutlarını kullanın:
bashbin/cake migrations migrate
1
MySQL Örneği
MySQL'i Yapılandırma
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
9Rotaları Yapılandırma
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
2Kullanıcı Tablosu Ekleme
src/Model/Table/UsersTable.php
dosyasına aşağıdaki kodu ekleyin:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Kullanıcı Verisi Ekleme
Kontrolörde kullanıcı verisi ekleyin:
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' => 'Kullanıcı eklendi']); } return new Response(['body' => 'Kullanıcı eklenemedi']); } 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
25Bir tarayıcı açın ve
https://servbay-cakephp-test.local/mysql-add
vehttps://servbay-cakephp-test.local/mysql
adresine gidin
PostgreSQL Örneği
PostgreSQL'i Yapılandırma
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
10Rotaları Yapılandırma
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
2Kullanıcı Tablosu Ekleme
src/Model/Table/UsersTable.php
dosyasına aşağıdaki kodu ekleyin:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Kullanıcı Verisi Ekleme
Kontrolörde kullanıcı verisi ekleyin:
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' => 'Kullanıcı eklendi']); } return new Response(['body' => 'Kullanıcı eklenemedi']); } 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
25Bir tarayıcı açın ve
https://servbay-cakephp-test.local/pgsql-add
vehttps://servbay-cakephp-test.local/pgsql
adresine gidin
Yukarıdaki adımlar sayesinde, başarılı bir şekilde CakePHP projesi oluşturdunuz ve çalıştırdınız, ServBay'in özelliklerini kullanarak projenizi yönettiniz ve çeşitli veritabanlarına bağlanıp sorguladınız.