seoseo
tr-opencart

     
avatar Şuanki Zaman: 12-03-2016, 02:34 PMHoşgeldin Misafir !
  Şifremi Hatırlat   kayıt ol
opencart temaları

Opencart'ı Anlamak Bölüm 1- index.php

Konuyu görüntüleyenler: 1 Misafir
 
Değerlendir:
  • 1 Oy - 5 Yüzde
  • 1
  • 2
  • 3
  • 4
  • 5
%
Cevapla  Gönder 
v  v
Yazar  sabitertan - Görüntüleme - Okunma  3421 - Yorum  3

sabitertanv
Süper Moderator
******
Süper Moderator user avatar
Çevrimdışı

Mesajlar: 290
Konular: 31
Katılma Tarihi: Dec 2011
Rep Puanı: 21
Teşekkürler: 22
126 Mesajına, 571 Teşekkür edildi.



Kişisel Bilgileri: v
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 
bu satır dosyamızın php diliyle yazıldığı gösterir ve sunucumuz bu kod başlatma etiketini gördüğü yerden kod bitirme etiketini( ?> ) gördüğü yere kadar satırları işleyecektir.

2.Satır
PHP Kod:
// Version 
Bu satırımız görüldüğü üzere iki yatık çizgi ( // ) ile başlamıştır. php dilinde bu simge o satırın bir kod içermediğini sadece yorum satırı olduğunu gösterir. Sunucumuz php betiğimizi işlerken bu satırı görmezden gelecektir. php dilinde yorum tek bir yorum satırı bu şeilde yapılırken birden çok satırı yorum haline getirmek için (/* */) etiketlerini kullanıyoruz.
Örnek:
PHP Kod:
/* Ben bir yorum satırıyım
Ben de bir yorum satırıyım.
Sunucu bu bloğu görmezden gelir.
*/ 

3.Satır
PHP Kod:
define('VERSION''1.5.5.1'); 
Bu satırdaki "define" bir temel php işlevidir. Bize kendimize ait evrensel değişkenler tanımlama şansı sunar. Bu şekilde tanımlanan bir değişken php betiğinin heryerinden çağrılabilir. Burada görüldüğü gibi define işlevinin 2 parçalı kullanımı oldukça yaygındır. İlk parçamız 'VERSION' evrensel değişkenimizin adını koymamızı ve virgülden sonraki değer VERSION değişkenimizin değerini tanımlamızı sağlar.

6-8.Satırlar
PHP Kod:
if (file_exists('config.php')) {
    require_once(
'config.php');

Burada yine temel php işlevlerinden "if", "file_exists" ve "require_once" kullanılmıştır. Sırayla inceleyelim;
"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')) {
    
header('Location: install/index.php');
    exit;

Burada if karşımıza çıktı bakalım neyin doğru olup olmadığına bakıyor;

(!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
Forumuna sahip çık! .:|Bağış Yap|:.
Alıntı Yaparak Cevapla
Paylaş!
 Teşekkür Edenler: osdem66 , Kıroğlumarket , defsir , eka7a , karaer , unblanced , ne-x99n , sakaryanotebook
opencart temaları
sabitertanv
Süper Moderator
******
Süper Moderator user avatar
Çevrimdışı

Mesajlar: 290
Konular: 31
Katılma Tarihi: Dec 2011
Rep Puanı: 21
Teşekkürler: 22
126 Mesajına, 571 Teşekkür edildi.



Kişisel Bilgileri: v
Konu Tarihi: 07-14-2013 11:56 AM
16-26. Satırlar
PHP Kod:
// Startup
require_once(DIR_SYSTEM 'startup.php');

// Application Classes
require_once(DIR_SYSTEM 'library/customer.php');
require_once(
DIR_SYSTEM 'library/affiliate.php');
require_once(
DIR_SYSTEM 'library/currency.php');
require_once(
DIR_SYSTEM 'library/tax.php');
require_once(
DIR_SYSTEM 'library/weight.php');
require_once(
DIR_SYSTEM 'library/length.php');
require_once(
DIR_SYSTEM 'library/cart.php'); 

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);
$registry->set('load'$loader); 

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_DRIVERDB_HOSTNAMEDB_USERNAMEDB_PASSWORDDB_DATABASE);
$registry->set('db'$db); 

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
Forumuna sahip çık! .:|Bağış Yap|:.
Alıntı Yaparak Cevapla
Paylaş!
 Teşekkür Edenler: Kıroğlumarket , nokta , osdem66 , defsir , eka7a , karaer , unblanced , ne-x99n , sakaryanotebook
sabitertanv
Süper Moderator
******
Süper Moderator user avatar
Çevrimdışı

Mesajlar: 290
Konular: 31
Katılma Tarihi: Dec 2011
Rep Puanı: 21
Teşekkürler: 22
126 Mesajına, 571 Teşekkür edildi.



Kişisel Bilgileri: v
Konu Tarihi: 07-14-2013 01:18 PM
44-48. Satırlar
PHP Kod:
if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
    
$store_query $db->query("SELECT * FROM " DB_PREFIX "store WHERE REPLACE(`ssl`, 'www.', '') = '" $db->escape('https://' str_replace('www.'''$_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
} else {
    
$store_query $db->query("SELECT * FROM " DB_PREFIX "store WHERE REPLACE(`url`, 'www.', '') = '" $db->escape('http://' str_replace('www.'''$_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");


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) {
    
$config->set('config_store_id'$store_query->row['store_id']);
} else {
    
$config->set('config_store_id'0);


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");

foreach (
$query->rows as $setting) {
    if (!
$setting['serialized']) {
        
$config->set($setting['key'], $setting['value']);
    } else {
        
$config->set($setting['key'], unserialize($setting['value']));
    }


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
Forumuna sahip çık! .:|Bağış Yap|:.
Alıntı Yaparak Cevapla
Paylaş!
 Teşekkür Edenler: defsir , eka7a , karaer , Kıroğlumarket , unblanced , ne-x99n , sakaryanotebook
sabitertanv
Süper Moderator
******
Süper Moderator user avatar
Çevrimdışı

Mesajlar: 290
Konular: 31
Katılma Tarihi: Dec 2011
Rep Puanı: 21
Teşekkürler: 22
126 Mesajına, 571 Teşekkür edildi.



Kişisel Bilgileri: v
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')); 
Bu satır yeni başlayanları şaşırtabilir. Aslında çok kullanışlı kısaltılmış bir if...else yordamına bakmaktayız.
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')) { 
$ssl_url=$config->get('config_ssl'); 
}
else { 
$ssl_url=$config->get('config_url');
}
$url = new Url($config->get('config_url'), $ssl_url); 

index.php den bakacağımız son bölüme geldik.

80-110. Satırlar
PHP Kod:
function error_handler($errno$errstr$errfile$errline) {
    global 
$log$config;
    
    switch (
$errno) {
        case 
E_NOTICE:
        case 
E_USER_NOTICE:
            
$error 'Notice';
            break;
        case 
E_WARNING:
        case 
E_USER_WARNING:
            
$error 'Warning';
            break;
        case 
E_ERROR:
        case 
E_USER_ERROR:
            
$error 'Fatal Error';
            break;
        default:
            
$error 'Unknown';
            break;
    }
        
    if (
$config->get('config_error_display')) {
        echo 
'<b>' $error '</b>: ' $errstr ' in <b>' $errfile '</b> on line <b>' $errline '</b>';
    }
    
    if (
$config->get('config_error_log')) {
        
$log->write('PHP ' $error ':  ' $errstr ' in ' $errfile ' on line ' $errline);
    }

    return 
true;


"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
sabitertan
Forumuna sahip çık! .:|Bağış Yap|:.
Alıntı Yaparak Cevapla
Paylaş!
 Teşekkür Edenler: eka7a , karaer , Kıroğlumarket , unblanced , ne-x99n , sakaryanotebook

« Önceki | Sonraki »
Cevapla  Gönder 

Opencart'ı Anlamak Bölüm 1- index.php Konusunun Linki Direk Link
Opencart'ı Anlamak Bölüm 1- index.php Konusunun HTML Kodu HTML Link
Opencart'ı Anlamak Bölüm 1- index.php Konusu BBCode Linki BBCode Link
Opencart'ı Anlamak Bölüm 1- index.php Konusunu Paylaş Sosyal Paylaş

Benzeyen Konular
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Opencart 2 Afiş Boyutları tolozgun 2 437 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 10,040 01-26-2015 04:18 PM
Son Mesaj: can.55
  Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım sabitertan 2 2,111 08-25-2013 09:35 AM
Son Mesaj: sabitertan
  Opencart'ı Anlamak Bölüm 3 Opencartta MVC +L sabitertan 2 1,948 08-22-2013 09:54 AM
Son Mesaj: unsound
  Opencart'ı Anlamak Bölüm 2- system dizini ve startup.php sabitertan 3 3,217 07-28-2013 01:19 PM
Son Mesaj: GokhanKorkut

Opencart'ı Anlamak Bölüm 1- index.php indir, Opencart'ı Anlamak Bölüm 1- index.php Videosu, Opencart'ı Anlamak Bölüm 1- index.php online izle, Opencart'ı Anlamak Bölüm 1- index.php Bedava indir, Opencart'ı Anlamak Bölüm 1- index.php Yükle, Opencart'ı Anlamak Bölüm 1- index.php Hakkında, Opencart'ı Anlamak Bölüm 1- index.php nedir, Opencart'ı Anlamak Bölüm 1- index.php Free indir, Opencart'ı Anlamak Bölüm 1- index.php oyunu, Opencart'ı Anlamak Bölüm 1- index.php download


Forum Atla: