Opencart'ı Anlamak Bölüm 2- system dizini ve startup.php |
|||
Konuyu görüntüleyenler: 1 Misafir
|
|||
|
|||
|
|||
|
|||
sabitertan
Süper Moderator Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri:
Konu Tarihi: 07-16-2013 09:05 AM
Bu bölümü okumaya başlamadan Opencart'ı Anlamak Bölüm 1-index.php yazısını okuduğunuzu varsayıyorum. Çünkü orada anlatılan temel işlevleri tekrar etmeyeceğiz. Bu başlıkta herkesin gözünü korkutan dokunsanız kırılacak sandığınız system dizini hakkında genel bir bilgi ve bu dizin içerisindeki startup.php'yi inceleyeceğiz. system dizini adından da anlaşılacağı üzere opencart sisteminin anaçatısını(framework) oluşturur. Opencart içinde kullanılacak tüm Sınıflar(Class), Yöntemler(Method), İşlevler(Function), veri düzenleyicileri(json veri yapısı oluşturma, utf8 dönüştürme) ve tüm bunların bir uyum içinde çalışmasını sağlayacak sistem motoru(system/engine) bu dizin içerisindedir. Belki bir çoğumuz bu dizine hiç girmedik, bazılarımızsa system/cache önbellek dizinini arasıra temizleme ihtiyacı duyduğu için bu dizini ziyaret etmiştir. Halbuki opencartın beyni, kalbi, iskeleti, tüm yaşamsal organları burada tanımlıdır. Bu dizinin anlamını biraz daha anlayabilmek için aşağıdaki benzetmeyi yapalım; catalog ve admin dizinlerinin aksine burada "model","view","controller" dizinleri yoktur. Burada o dizinlere anlam verecek esas yapı mevcuttur. catalog ve admin bizlerin dışarıdan gördüğü kas ve deri diyebiliriz, ama içinde iskelet olmayan bir deri ve kas yığını nasıl görünecekse, system dizini olmadan ne catalog ne de admin dizinlerinin bir anlamı yoktur. Şimdi sırasıyla dizinleri inceleyelim system/cache Bu dizin önbellek dediğimiz kısmı oluşturur ve sistem içerisinde kullanılan genel işlevlerin, sınıfların bir nevi derlenmiş kullanıma hazır hallerini saklar. Bu dizine gelen ve burada saklanan dosyalar bizlere halihazırda tamamlanmış bir sitenin çok daha hızlı ve verimli çalışması olanağını sunar. Bu dizin içerisinde dosyaları eğer sitenizde bir değişiklik yapmıyorsanız silmenize gerek yoktur. system/config En gizemli dizinimiz diyebilirim . Bu dizin içerisinde sadece index.html ile gelir. index.html in orada bulunmasının tek sebebi github.com un boş dizinlere izin vermemesidir. Bu nedenle aslında boş olması gerekn tüm opencart dizinlerinde index.html dosyasını görürsünüz. Bu dizin aslında çok ileri düzey ayarları ekleyebilmemizi sağlar. Burada oluşturacağımız myconfig.php içerisine aşağıdaki gibi ayarlar tanımlayabiliriz. PHP Kod: $_['maximum_users']='100'; $config->load('myconfig'); komutunu index.php ye ekleyerek daha sonra istediğimiz yerden çağırabiliriz. Bu şekilde veritabanında saklamak istemediğimiz ve gerek catalog gerekse admin tarafında kullanmak istediğimiz ayarları bu dosya yardımıyla çağırabiliriz. system/database Bu dizinde değişik veritabanı sunucularıyla iletişimi sağlayacak sınıflar tanımlıdır. Opencart geliştiricileri bunları ayrı dosyalarda sunucu isimleriyle saklamayı uygun görmüşlerdir. Bu nedenle burada adını gördüğümüz tüm veritabanı sunucuları opencart ile kullanılabilmektedir. Bunlar dizin içerisinde de görüleceği gibi MSSQL, MySQL, MySQLi ve PostgreSQL veritabanı sunucularıdır. PDO (PHP Data Object) desteği olan sunucuları desteklemek için ise pdo.php dosyasını görmekteyiz. PDO bir çok veritabanı sunucu için bir ara katman oluşturur. Böylece eğer veritabanı sunucusu değiştirilecekse veritabanını baştan yazmamız gerekmez. İlgili veritabanı için yazılmış PDO sürücüsünü sunucumuza kurmak yeterli olacaktır. Sunucunuzun hangi veritabanı sunucularıda PDO sürücüsü sağladığını öğrenmek için phpinfo() çalıştırılarak "PDO drivers" bölümüne bakarak, PDO sürücüsü etkinleştirilmiş veritabanı sunucularını görebiliriz. Önemli Not: Opencart şu anda sadece mysql ile tam uyumlu çalışmaktadır. system/engine Bu dizin bütün opencart çatısının temelini oluşturur. index.php de çağrılma sırasıyla registry, loader, front, action son sınıflarını ve controller,model özet(php.net'de ve diğer birçok kaynakta soyutlama sınıfı dense de pek bir SOYUT kaldığı için ben burada daha anlaşılır olarak özet demeyi tercih ediyorum) sınıflarını içerir. Bu sınıfları da daha sonra detaylı inceleyeceğiz ancak kısaca ne işe yaradıklarından bahsedelim. registry.php : opencart içerisinde çağrılabilecek tüm alt nesnelerin oluşturulması, saklanması, değiştirilmesi ve gerektiğinde çağrılabilmesini sağlar. loader.php : opencartta sıklıkla kullanacağımız, "set", "get", "library", "helper", "model", "database", "language", "config" gibi işlevlerin sisteme eklenmesini sağlar. front.php : kullanacağımız tüm controller sınıflarını biraraya getirmemizi sağlar. action.php : kullanmak istediğimiz tüm sınıf, metod, dosya ve değişkenlerin tanımlı olup olmadığına bakar ve sonucu bize döndürür. controller.php : Tüm controller sınıflarının özet sınıfını oluşturur. Tüm controller sınıfları bu özet sınıf içerisine genişletilir. (class ControllerCommonHeader extends Controller, örneğinde olduğu gibi) model.php : Tüm model sınıflarının özet sınıfını oluşturur. Tüm model sınıfları bu özet sınıf içerisine genişletilir. (class ModelCatalogCategory extends Model, örneğinde olduğu gibi) system/helper Bu dizin içerisinde adı üstünde "yardımcı" işlevler bulunmaktadır. Herhangi bir sınıfa ait olmayan ve bir nesne parçası oluşturmayan işlevler buradadır. Buradaki işlevlerin esas amacı verilen veri yığınını süzüp, düzenleyip geri göndermektir. system/library Tüm temel opencart işlem sınıfları burada bulunmaktadır. Temel işlevlerin tamamı buradadır. Kategori tnaımları, Ürün tanımları, ağırlık, kur gibi aklınıza gelecek her türlü temel tanımların işlevleri bu dizin içerisinde yer alır. Genel anlamda bu dosyaların yapıları da birbirlerine benzer. Herbiri adını taşıdığı bileşenle ilgili veritabanından belirli bir veriyi alıp düzenlemek ve çağrıldığı yere geri göndermek işlerini gerçekleştirirler. Buradaki işlevleri detaylı olarak açıklamayacağım, ancak örnek olarak; customer.php müşteri bilgilerini veritabanından alır ve müşteri ile ilgili çağrılacak tüm değişkenleri ve işlevleri oluşturur. Bununla da kalmaz müşterinin giriş yapıp yapmadığının bilgisini de bize verir. system/logs opencart sisteminin hata ve erişim kayıtlarının tutulduğu dizindir. Sistemde bir değişlik yaptınız ve yaptığınız değişilik size hiçbir hata vermeden sitenizi bozduysa ilk bakmanız gereken yer bu dizin içerisinde bir error.txt yada error.log dosyasının olup olmamasıdır ve eğer var ise bu dosyayı açıp inceleyerek hataları gözden geçirebilirsiniz. |
|
sabitertan
Süper Moderator Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri:
Konu Tarihi: 07-16-2013 09:21 PM
Sıra geldi startup.php'ye. Bu dosyamız bizim için sunucu ayarlarını denetler ve genel anlamda karşımıza çıkacak bir çok sorundan bizi en başından kurtarır. Kısım kısım inceleyelim.
PHP Kod: error_reporting(E_ALL); PHP Kod: version_compare(phpversion(), '5.1.0', '<') == true "//Register Globals" ile başlayıp "// Magic Quotes Fix" satırına kadar devam eden bölüm eğer register_globals etkin ise bununla alakalı oluşacak sorunlardan sistmimizi uzak tutmak için bir takım sunucu değişkenlerini ve ayarlarını değiştirir. "register_globals" uzun bir süre tartışma konusu olmuşsa da 5.3 sürümü ile önerilmemekte ve varsayılan olarak "Off" yani kapalı gelmektedir. Unutkan ya da hızlı geliştirme yapmaya çalışan bir kullanıcı için güvenlik sorunlarına yol açtığından php 6.0 da tamamen kaldırılacaktır. Sunucunuzda bu özelliğin "Off" olmasına dikkat edin. "// Magic Quotes Fix" ile başlayan bölüm magic_quotes_gpc özelliğinin etkin olup olmadığını etkin ise bazı özelliklerde değişiklik yapmayı sağlar. magic_quotes_gpc aslında bir güvenlik özelliği olarak tasarlanmış olmasına rağmen, günümüzde genel bir ayrım yapmadan her türlü tırnak, çift tırnak,bölü işaretlerinden önce ters bölü işareti eklemesinden ötürü tercih edilmemektedir. php 6.0'da bu özellikte tamamen kaldırılacaktır. her giden gelen veriye stripslashes() komutunu uygulamamızı gerektireceğinden performans sorunlarına yol açan bir özelliktir. Sunucunuzda bu özelliğin de "Off" olmasına dikkat edin. PHP Kod: if (!ini_get('date.timezone')) { "// Windows IIS Compatibility" ile başlayıp "// Helper" ile biten bölüm herkesin uzak durmasını ŞİDDETLE önerdiğimiz Windows sunucularının sıkıntılarını aşmak için yazılmış bölümdür. Fazla söze gerek yok startup.php nin en büyük düzeltme işlevi yaptığı bölümdür bu nedenle performans sorunlarına yol açacaktır. Windows sunucuda opencart kurup niye sunucum yavaş diye hiç düşünmeyin işte size kanıtı "//Helper", "Engine", "Common" bölümleri daha önce anlattığımız Sınıfların ve Yardımcıların yüklenmesini sağlar. Şimdi gelelim startup.php de performans geliştirmesine eğer aşağıdaki şartları sağlıyorsanız startup.php yi biraz daha küçülterek kayda değer bir performans iyileştirmesi sağlarsınız. 1. Unix, Linux tabanlı sunucular kullanıyorsanız 2. php.ini dosyanızda (phpinfo() ile de görebilirsiniz) "register_globals=Off" ise 3. php.ini dosyanızda (phpinfo() ile de görebilirsiniz) "magic_quotes_gpc=Off" ise 4. php.ini dosyanızda (phpinfo() ile de görebilirsiniz) date.timezone tanımlı ise yukarıdaki 4 özelliği de sağlıyorsanız startup.php de // Check Version ile başlayıp // Helper ile biten tüm bölümleri silebilirsiniz. yani startup.php dosyanızı şu hale getirebilirsiniz PHP Kod: <?php Bu bölümde anlatacaklarım bu kadar, herkese faydalı olması dileğiyle. |
|
sabitertan
Süper Moderator Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri: |
|
GokhanKorkut
Deli (: Mesajlar: 227 Konular: 9 Katılma Tarihi: Sep 2012 Rep Puanı: 6 Teşekkürler: 18
81 Mesajına, 183 Teşekkür edildi. Kişisel Bilgileri:
Konu Tarihi: 07-28-2013 01:19 PM
Çok güzel bir yazı olmuş, elinize sağlık.
Ayrıca bir noktaya daha değinmek gerekir. Altını: "Windows Hosting Windows hosting, asp, asp.net , Microsoft SQL yazılımlarını çalıştırmak için kullanılan bir platforma sahiptir. Bu alanda php yazılımlardan ziyade asp yazılımlar kullanılmalıdır. Linux Hosting Linux hosting, php tabanlı yazılımlar için ideal ortama sahiptir, bazı php yazılımların gereksinimleri olan ek modullerin tamamı linux sunucular üzerine rahatlıkla kurulabilirler." Sitenizi kurmaya başlamadan önce, sunucunuzun Linux olmasına dikkat etmekte yarar vardır. Bir çok eklenti windows sunuculardan çok daha rahat çalışmaktadır. Yani şöyle düşünün; Bir Mac PC'de Mac Os X çalışmasıyla, Windows üzerinde Virtual olarak Mac Os X çalıştırmak aynı performansı vermez. Belki çalıştırabilirsiniz ancak Mac Os X'in bütün özelliklerini kullanamazsınız. |
|
|
|
|
|
Direk Link | |
HTML Link | |
BBCode Link | |
Sosyal Paylaş |
Benzeyen Konular | |||||
Konu: | Yazar | Cevaplar: | Gösterim: | Son Mesaj | |
[Video] Opencart 1.5.x Seo Link Sadece Ürün İsmi Olsun | e-ticaretdersleri | 5 | 14,955 |
10-17-2017 05:34 PM Son Mesaj: fotoğrafçı |
|
Opencart 2 Afiş Boyutları | tolozgun | 2 | 16,081 |
02-02-2016 08:04 PM Son Mesaj: tolozgun |
|
Opencart 1.5.x tüm versiyonlarda Slayt ve afiş(banner)oluşturmak (resimli anlatım) | osdem66 | 9 | 23,298 |
01-26-2015 04:18 PM Son Mesaj: can.55 |
|
Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım | sabitertan | 2 | 22,487 |
08-25-2013 09:35 AM Son Mesaj: sabitertan |
|
Opencart'ı Anlamak Bölüm 3 Opencartta MVC +L | sabitertan | 2 | 18,297 |
08-22-2013 09:54 AM Son Mesaj: unsound |
|
Opencart'ı Anlamak Bölüm 1- index.php | sabitertan | 3 | 15,356 |
07-14-2013 05:20 PM Son Mesaj: sabitertan |