Opencart'ı Anlamak Bölüm 1- index.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-14-2013 10:17 AM
Merha Arkadaşlar, bu konuya ne diyeyim nereden anlatmaya başlayayım diye biraz kafa yorduktan sonra, temel php, mysql bilgileri vermektense(bir çok yerde yüzlerce örnek bulunabilir) opencart alt yapısını adım adım analiz etmenin daha faydalı olacağını düşündüm ve bu yazıyı oluşturdum. Umarım herkese faydalı olur. Bilindiği üzere opencart php, mysql, html, javascript, jquery kodlamalarından oluşur. Adım adım opencart arkaplanını incelediğimizde karşımıza öncelikle index.php çıkacaktır. Neden index.php? Çünkü sunucular bir site için istek yapıldığında öncelikle index.html,index.php, default.aspx gibi dosyaları öntanımlı olarak ararlar. İlk satırımızımdam başlayalım PHP Kod: <?php 2.Satır PHP Kod: // Version Örnek: PHP Kod: /* Ben bir yorum satırıyım 3.Satır PHP Kod: define('VERSION', '1.5.5.1'); 6-8.Satırlar PHP Kod: if (file_exists('config.php')) { "if" kelime anlamında olduğu gibi "eğer" anlamında kullanılır. PHP yorumlayıcı makinesi bu ifadeden sonra parantez içinde yazılan ifadenin doğru olup olmadığına bakar. Eğer ifade doğru ise yani "TRUE" değerini döndürürse süslü parantez içindeki işlevler çalıştırılır. Eğer ifade hata yani "FALSE" değerini döndürürse süslü parantez içindeki ifade işletilmeyecektir. Burada görüldüğü üzere "file_exist" bir dosyanın sunucuda olup olmadığına bakar ve evet var yani "TRUE" ya da hayır yok yani "FALSE" değeri döndürür. Buradan dönen değer if yordamının işletilip işletilmeyeceğini belirler. Eğer sunucumuzda config.php var ise buradaki yordama göre "require_once" işlevi çalıştırılarak "config.php" dosyamız index.php dosyamızın bir parçası haline getirilir. Yani biz o dosyayı şu anda görmesekte php yorumlayıcısı artık config.php de bulunan tüm içeriği index.php nin bir parçası haline getirmiştir.Peki bu ne demek? Bu artık config.php de bulunan değişkenleri betiğimizin devamında kullanabilceğiz demektir. 11-14.Satırlar PHP Kod: if (!defined('DIR_APPLICATION')) { (!defined('DIR_APPLICATION')) Görüldüğü üzere "defined" php temel işlevi kullanılmış. Bu işlev bir değişkenin önceden tanımlı olup olmadığına bakar. burada "DIR_APPLICATION" değişkeni aranmaktadır. İşlevin başındaki ünlem işareti ( ! ) "değilse" anlamını taşımaktadır. Dolayısıyla tam olarak aranan değer; DIR_APPLICATION değişkeni tanımlı "değilse" TRUE tanımlı ise FALSE değerleridir. Hatırlarsak config.php yi içeri aktarmıştık. Bu nedenle eğer DIR_APPLICATION orada tanımlanmışsa, bizim anlayacağımız şekliyle opencart kurulmuşsa buradaki süslü parantezdeki işlev atlanacaktır. Opencart ı ilk kez kurarken bizi install/index.php ye yönlendiren işte tam da bu koddur. config.php kurulum öncesinde boştur. Kurulum sonrasında DIR_APPLICATION değişkeni config.php ye tanımlandığından tekrar kurulum sayfasına yönlendirilmeyiz. |
|
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-14-2013 11:56 AM
16-26. Satırlar
PHP Kod: // Startup Burada Görüldüğü üzere config.php den sonra 8 ayrı dosya daha index.php içine aktarılmaktadır. Böylece bu dosyaların içinde işlevleri index.php içinde kullanabileceğiz. (İçlerindeki işlevleri daha sonra tek tek ele alacağız). 29.Satır PHP Kod: $registry = new Registry(); Gördüğümüz $registry yerel bir değişkendir ve = (eşittir) işaretiyle bu değişkene bir değer atanır. "new" işlevi bu değişkenin ne tür bir değişken olacağını seçmemizi sağlar. Burada görüldüğü üzere $registry değişkenine daha önceden içe aktardığımız startup.php'nin çağırdığı engine/registry.php dosyasında bulunan Registry() sınıfı yardımıyla bir nesne atanmaktadır. Bu nesne opencart içerisinde çağrılabilecek tüm alt nesnelerin oluşturulması, saklanması ve gerektiğinde kullanılabilmesini sağlar. Biz bu değişkenleri en iyi controller dosyaları içerisindeki, $this->data[''] yapısından tanıyoruz. 32-33. Satırlar PHP Kod: $loader = new Loader($registry); Artık verilerimizi yapılandırmaya ve yeni nesnelerimizi oluşturmaya başladık. Burada $loader nesnesi oluşturulmaktadır. Bu nesne opencart içerisinde sıklıkla kullanacağımız, "set", "get", "helper", "model", "language", "config" gibi işlevsel parçaları $registry nesnemize eklemektedir. $registry->set('load', $loader) görüldüğü üzere "load" işlevi $loader nesnesi yardımıyla $registry nesnesinin bir parçası haline gelmiştir. Biz bunu en basit haliyle yine controller dosyalarında sıklıkla $this->load->model(''); şeklinde göreceğiz. 40-41. Satırlar PHP Kod: $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); Burada da DB sınıfı kullanılarak config.php de tanımlı veritabanı değişkenleri $db nesnesine aktarılmaktadır ve takip eden satırda yine $registry nesnesinin bir parçası haline gelmektedir. |
|
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-14-2013 01:18 PM
44-48. Satırlar
PHP Kod: if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) { Buradaki if yordamı sitemizde/sunucumuzda ssl olup olmamasına göre mağaza bilgisini veritabanından alıp ssl var ise bağlantı bilgisini https ile, ssl yok ise http ile başlayacak şekilde değiştirmektedir. 'isset' php temel işlevi bir değişken, dizi ya da nesnenin tanımlı olup olmadığına bakar. Tanımlı ise "TRUE" değilse "FALSE" değeri döndürür. $_SERVER['HTTPS'], temel bir php değişkenidir. Sunucu da ssl olup olmadığını anlamamızı sağlar. Bu değişken tanımlı ise ve 'on' ya da '1' değerindeyse sitede ssl tanımlı demektir, 'off' ya da '0' değerindeyse sitede ssl tanımlı değildir. '&&' işlevi "ve" anlamına gelir, her iki tarafındaki ifade de doğru değeri olduğu sürece doğru sonucunu yani "TRUE" değerini döndürür aksi halde "FALSE" değerini dönderecektir. '||' işlevi veya anlamındadır ve iki tarafındaki herhangibir ifadenin doğru olması "TRUE" sonucunu elde etmek için yeterlidir. '==' işlevi eşit ise anlamındadır. soldaki değer sağdaki değere eşit ise "TRUE" değil ise "FALSE" değerini döndürür. "else" yordamı eğer "if" yordamı "FALSE" sonucuna varırsa işletilecek kısmı belirtmektedir. SQL istekleri model kısmı anlatılırken detaylı işlenecektir. Bu nedenle şimdilik SQL kısımlarını geçeceğiz. Sonuç olarak bu satırlar $store_query nesnesisin oluşturulmasını sağlar. Bu nesne Mağaza adı(name), URL'si(url), SSL bilgisi(ssl) ve mazağa tanımlama numarasını(store_id) içerir. 50-54. Satırlar PHP Kod: if ($store_query->num_rows) { Buradaki gördüğümüz satırlar eğer $store_query nesnesinde num_rows bileşeni tanımlı ise $config nesnesine mağaza tanımlama numarası($store_query->row['store_id']) ile, num_rows tanımlı değilse 0 değeri ile config_store_id bileşenini atar. Biz artık bu değişkeni gerektiğinde $this->config->get('config_store_id'); komutuyla çağırabiliriz. 57-65. Satırlar PHP Kod: $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC"); Buradaki satırlar veritabanımızdan tüm ayarlarımızı(setting tablosundaki) ki buna modül ayarlarıda dahildir, alıp daha sonra kullanılmak üzere $setting dizisine atar. Buradaki "foreach" yapısı php temel döngü araçlarından biridir. Kelime anlamı olarak "herbiri" anlamındadır ve bu anlama uygun olarak parantez içerisinde bulunan "$query->rows" dizisindeki herbir elemanı $setting dizine atıyoruz ve devamında if...else yordamıyla, controller dosyalarımızda $this->config->get('ayar_adı') şeklinde çağıracağımız ayar değişkenlerini atamış oluyoruz. |
|
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-14-2013 05:20 PM
73. Satır
PHP Kod: $url = new Url($config->get('config_url'), $config->get('config_secure') ? $config->get('config_ssl') : $config->get('config_url')); Görüldüğü gibi "?" (soru işareti)nden önce gelen ifade doğru ise sonuç soru işaretinden hemen sonra gelen ifadedir, aksi halde ":" dan sonra gelen ifade sonucumuz olacaktır. Yukarıdaki kod aslında aşağıda vereceğim örnekle aynı işi yapar. PHP Kod: if ($config->get('config_secure')) { index.php den bakacağımız son bölüme geldik. 80-110. Satırlar PHP Kod: function error_handler($errno, $errstr, $errfile, $errline) { "function" php de içine değerler gönderip belirli bir işlevi gerçekleştirip bize dönüş yapmasını istediğimiz php temel işlevleri dışında bizim tanımlayacağımız özel işlevleri oluşturur. Burada oluşturulan işlevin adı "error_handler" dır. 4 değişkeni($errno, $errstr, $errfile, $errline) girdi olarak işler ve sonucu bize döndürür. "global" bize evrensel değişkenler tanımlamamızı sağlar. Burada $log ve $config değişkenleri tanımlanmıştır. global olarak tanımlanan bu değerler bu işlevin dışından da değiştirilebilirler. "switch"..."case"..."default" yordamı bize birçok sonuçlu değerlendirme işlevi sağlar. if..else yapısının aksine bir çok koşul bir çok farklı sonuca bağlanabilir. switch($errno) yordamına giren değişken sırasıyla "case" bloklarında aranır ve hangisine uyuyorsa o bloğun sonucu bize geri döner, eğer hiçbir bloğa uymuyorsa bize "default" bloğunun sonucu dönecektir. Bundan sonra kullanılan işlevler, tanımlar yukarıda anlatılanların devamı ve bileşimi niteliğindedir. Genel anlamda php işlevlerini ve opencart çekirdek kodlama yapısını birarada vermeye çalıştım umarım az da olsa bir faydası olur. Herkese iyi çalışmalar |
|
|
|
|
|
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,899 |
10-17-2017 05:34 PM Son Mesaj: fotoğrafçı |
|
Opencart 2 Afiş Boyutları | tolozgun | 2 | 16,024 |
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,269 |
01-26-2015 04:18 PM Son Mesaj: can.55 |
|
Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım | sabitertan | 2 | 22,431 |
08-25-2013 09:35 AM Son Mesaj: sabitertan |
|
Opencart'ı Anlamak Bölüm 3 Opencartta MVC +L | sabitertan | 2 | 18,243 |
08-22-2013 09:54 AM Son Mesaj: unsound |
|
Opencart'ı Anlamak Bölüm 2- system dizini ve startup.php | sabitertan | 3 | 19,859 |
07-28-2013 01:19 PM Son Mesaj: GokhanKorkut |