Yeni Cevap 
 
Konuyu Değerlendir
  • 3 Oy - 3.67 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
OpenCart Action Temel Sınıfı(Base Class)
Yazar Mesaj
duzgun Çevrimdışı
Hizmetinizde
*******

Mesajlar: 2,323
Katılım: Jul 2008
Rep Puanı: 17
Mesaj: #1
OpenCart Action Temel Sınıfı(Base Class)
OpenCart Action Temel Sınıfı(Base Class)

OpenCart Action Sınıfının amacı şu şekildedir.
Base Class olan Action Sınıfının dosya yolu system/engine/action.php dır.

Action Sınıfı ile query string olarak gelen route değerine ait sınıfın özellik ve metotları tespit edilmektedir.

Opencart url deki route parametresinin değerine göre sınıf(class)lara ulaşmaktadır.
Örnek
route=common/home
route=product/category
route=product/search
route=product/product
route=checkout/cart
gibi örnekler sıralandırılabilir.

index.php deki aşağıdaki kullanım örneğinde olduğu gibi
PHP Kod:
<?php
// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance/check'));
?>
new Action('common/maintenance/check') şekinde route değeri yerine common/maintenance/check
şeklindede sabit olarak herhangi bir sınıfın tespit edilmesi istenebilir.

Action Sınıfı common/maintenance/check ifadesini şu şekilde yorumlar.

DIR_APPLICATION/controller/common/maintenance.php dosya yolu.
Controllercommonmaintenance sınıfı
maintenance dizin olmadığı için check inde Controllercommonmaintenance içinde metot olarak tespit eder.

DIR_APPLICATION/controller/common/maintenance.php dosyasına bakıldığında Controllercommonmaintenance
olarak bulunan sınıf adının ControllerCommonMaintenance olarak adlandırılmış olduğunu göreceksiniz.
Burada bu sınıfın Controllercommonmaintenance şeklinde çağrılması php de sınıf isilerininin harf büyüklüğüne duyarsız oluşudur.
Bu nedenle Action sınıfının içinde ayrıca bir ucfirst fonksiyonu kullanmaya gerek olmamıştır.

PHP değişken isimleri küçük-büyük harf duyarlıdır fakat oluşturulan sınıf ve metod isimleri ise harf büyüklüğüne duyarsızdır.

Değişken(variable) ismi kullanım örneği
Değişken harf büyüklüğüne duyarlıdır.
PHP Kod:
<?php
$MyString 
"OpenCart";
echo 
$MyString// Çıktı: OpenCart
?>

PHP Kod:
<?php
$MyString 
"OpenCart";
echo 
$mystring// Çıktı: Notice: Undefined variable: Mystring
?>

Metod (Yöntem,Function) kullanım örneği
Fonksiyonlar harf büyüklüğüne duyarlı değildir.
PHP Kod:
<?php
function MyString(){
return 
"OpenCart";
}
echo 
MyString(); // Çıktı: OpenCart
?>

PHP Kod:
<?php
function MyString(){
return 
"OpenCart";
}
echo 
mystring(); // Çıktı: OpenCart
?>

Sınıf (Class) kullanım örneği
Sınıflar harf büyüklüğüne duyarlı değildir.
PHP Kod:
<?php
class MyClass
{
const 
mystring 'OpenCart';
function 
myclass(){
$this->mystring=self::mystring;
}
}
echo 
MyClass::mystring// Çıktı: OpenCart
echo myclass::mystring// Çıktı: OpenCart
$mystring = new MyClass();
echo 
$mystring->mystring// Çıktı: OpenCart
$mystring = new myclass();
echo 
$mystring->mystring// Çıktı: OpenCart
?>

Bu bilgiler ışığında Action Sınıfının görevini iyi anlamak için aşağıdaki örneğimizi yorumlayalım.

PHP Kod:
<?php
define
('DIR_APPLICATION','C:/inetpub/wwwroot/opencart/catalog/');
$action action('common/maintenance/check');

function 
action($route$args = array()) {
$path '';
$parts explode('/'str_replace('../'''$route));
foreach (
$parts as $part) {
$path .= $part;
if (
is_dir(DIR_APPLICATION 'controller/' $path)) {
$path .= '/';
array_shift($parts);
continue;
}
if (
is_file(DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php')) {
$thisfile DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php';
$thisclass 'Controller' preg_replace('/[^a-zA-Z0-9]/'''$path);
array_shift($parts);
break;
}
if (
$args) {
$thisargs $args;
}
}
$method array_shift($parts);
if (
$method) {
$thismethod $method;
} else {
$thismethod 'index';
}
echo 
'$route = '.$route."\n<br>";
echo 
'$thismethod = '.$thismethod."\n<br>";
echo 
'$thisclass = '.$thisclass."\n<br>";
}
?>

Kullanılan kodlamayı şimdide açıklaması ile birlikte yazalım.

PHP Kod:
<?php
define
('DIR_APPLICATION','C:/inetpub/wwwroot/opencart/catalog/');
$action action('common/maintenance/check');

function 
action($route$args = array()) {

$path '';
//$parts = Array ( 0 => common 1 => maintenance 2 => check );
$parts explode('/'str_replace('../'''$route));

//$parts dizisi döngü ile saydırılır
foreach ($parts as $part) {

//common
//common/maintenance
$path .= $part;

//$path yolu bir dizin ise
if (is_dir(DIR_APPLICATION 'controller/' $path)) {
//$path dizin ise onuna / karakteri eklenir.
//örneğimizde dizin sadece common olduğu için
//$path = common/ şeklinde olacak.
$path .= '/';

//dizinin ilk elemanını siler
//örneğimizdeki path da sadece common dizin olduğu için döngünün sadece
//ilk aşamasında  $path dizin ise kontrolü işleyecektir ve  array_shift
//ile common diziden çıkarılcaktır. maintenance ve check kalacak.
array_shift($parts);

//dizin ise aşağıdaki kodlar atlanarak bir sonraki sıraya geçilsin
continue;
}

//$path yolu bir dosya ise
if (is_file(DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php')) {

//DIR_APPLICATION . controller/common/maintenance.php
$thisfile DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php';

//Controllercommonmaintenance
$thisclass 'Controller' preg_replace('/[^a-zA-Z0-9]/'''$path);

//ile maintenance diziden çıkarılcaktır. check kalacaktır.
array_shift($parts);

//herhangi bir dosyaya ulaşılırsa(dizin değil) yukarıdaki işlemden sonra
//foreach döngüsünden çıkılması talimatı verilir.
break;
}
//action sınıfına gönderilen ek parametrelerin kaydı.
if ($args) {
$thisargs $args;
}
}

//ile check diziden çıkarılcaktır. dizi boş kalacaktır.
//array_shift fonksiyonu çıkarılan check değerini geri döndürür.
$method array_shift($parts);

//common/home şeklinde route bilgisi gelseydi $method değeri false olacaktı.
//common/maintenance/check şeklinde route bilgisi geldiğinde $method değeri check
//olarak dönecektir.
if ($method) {
$thismethod $method;
} else {
$thismethod 'index';
}
echo 
'$route = '.$route."\n<br>";
echo 
'$thismethod = '.$thismethod."\n<br>";
echo 
'$thisclass = '.$thisclass."\n<br>";
}
?>

Opencart Action Sınıfının Amaç ve Görevi bu şekildedir. Açık kaynak kod olan bir sistemi kullanma için sistemi iyi anlamak gerekir. Sistemide ancak akış diyagramını ve kodlama yapısını bilmekle anlayabilirsiniz. Opencart kodlama altyapısı üzerine yazılarımız devam edecektir.

©duzgun.com Harici yayınlanması yasaktır.
28-02-2011 23:53
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
ismedya Çevrimdışı
Member
***

Mesajlar: 10
Katılım: Jan 2012
Rep Puanı: 0
Mesaj: #2
RE: OpenCart Action Temel Sınıfı(Base Class)
teşekkürler .
22-03-2012 14:23
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
rezaradmehr Çevrimdışı
Member
***

Mesajlar: 11
Katılım: May 2014
Rep Puanı: 0
Mesaj: #3
RE: OpenCart Action Temel Sınıfı(Base Class)
teşekkürler
02-06-2014 14:10
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
uveybaba Çevrimdışı
Junior Member
**

Mesajlar: 7
Katılım: Aug 2014
Rep Puanı: 0
Mesaj: #4
RE: OpenCart Action Temel Sınıfı(Base Class)
teşekkürler
04-08-2014 17:19
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
Düzgün Reyiz Üşüyoruz Çevrimdışı
Junior Member
**

Mesajlar: 1
Katılım: Aug 2014
Rep Puanı: 0
Mesaj: #5
RE: OpenCart Action Temel Sınıfı(Base Class)
(28-02-2011 23:53)duzgun demiş ki:  OpenCart Action Temel Sınıfı(Base Class)

OpenCart Action Sınıfının amacı şu şekildedir.
Base Class olan Action Sınıfının dosya yolu system/engine/action.php dır.

Action Sınıfı ile query string olarak gelen route değerine ait sınıfın özellik ve metotları tespit edilmektedir.

Opencart url deki route parametresinin değerine göre sınıf(class)lara ulaşmaktadır.
Örnek
route=common/home
route=product/category
route=product/search
route=product/product
route=checkout/cart
gibi örnekler sıralandırılabilir.

index.php deki aşağıdaki kullanım örneğinde olduğu gibi
PHP Kod:
<?php
// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance/check'));
?>
new Action('common/maintenance/check') şekinde route değeri yerine common/maintenance/check
şeklindede sabit olarak herhangi bir sınıfın tespit edilmesi istenebilir.

Action Sınıfı common/maintenance/check ifadesini şu şekilde yorumlar.

DIR_APPLICATION/controller/common/maintenance.php dosya yolu.
Controllercommonmaintenance sınıfı
maintenance dizin olmadığı için check inde Controllercommonmaintenance içinde metot olarak tespit eder.

DIR_APPLICATION/controller/common/maintenance.php dosyasına bakıldığında Controllercommonmaintenance
olarak bulunan sınıf adının ControllerCommonMaintenance olarak adlandırılmış olduğunu göreceksiniz.
Burada bu sınıfın Controllercommonmaintenance şeklinde çağrılması php de sınıf isilerininin harf büyüklüğüne duyarsız oluşudur.
Bu nedenle Action sınıfının içinde ayrıca bir ucfirst fonksiyonu kullanmaya gerek olmamıştır.

PHP değişken isimleri küçük-büyük harf duyarlıdır fakat oluşturulan sınıf ve metod isimleri ise harf büyüklüğüne duyarsızdır.

Değişken(variable) ismi kullanım örneği
Değişken harf büyüklüğüne duyarlıdır.
PHP Kod:
<?php
$MyString 
"OpenCart";
echo 
$MyString// Çıktı: OpenCart
?>

PHP Kod:
<?php
$MyString 
"OpenCart";
echo 
$mystring// Çıktı: Notice: Undefined variable: Mystring
?>

Metod (Yöntem,Function) kullanım örneği
Fonksiyonlar harf büyüklüğüne duyarlı değildir.
PHP Kod:
<?php
function MyString(){
return 
"OpenCart";
}
echo 
MyString(); // Çıktı: OpenCart
?>

PHP Kod:
<?php
function MyString(){
return 
"OpenCart";
}
echo 
mystring(); // Çıktı: OpenCart
?>

Sınıf (Class) kullanım örneği
Sınıflar harf büyüklüğüne duyarlı değildir.
PHP Kod:
<?php
class MyClass
{
const 
mystring 'OpenCart';
function 
myclass(){
$this->mystring=self::mystring;
}
}
echo 
MyClass::mystring// Çıktı: OpenCart
echo myclass::mystring// Çıktı: OpenCart
$mystring = new MyClass();
echo 
$mystring->mystring// Çıktı: OpenCart
$mystring = new myclass();
echo 
$mystring->mystring// Çıktı: OpenCart
?>

Bu bilgiler ışığında Action Sınıfının görevini iyi anlamak için aşağıdaki örneğimizi yorumlayalım.

PHP Kod:
<?php
define
('DIR_APPLICATION','C:/inetpub/wwwroot/opencart/catalog/');
$action action('common/maintenance/check');

function 
action($route$args = array()) {
$path '';
$parts explode('/'str_replace('../'''$route));
foreach (
$parts as $part) {
$path .= $part;
if (
is_dir(DIR_APPLICATION 'controller/' $path)) {
$path .= '/';
array_shift($parts);
continue;
}
if (
is_file(DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php')) {
$thisfile DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php';
$thisclass 'Controller' preg_replace('/[^a-zA-Z0-9]/'''$path);
array_shift($parts);
break;
}
if (
$args) {
$thisargs $args;
}
}
$method array_shift($parts);
if (
$method) {
$thismethod $method;
} else {
$thismethod 'index';
}
echo 
'$route = '.$route."\n<br>";
echo 
'$thismethod = '.$thismethod."\n<br>";
echo 
'$thisclass = '.$thisclass."\n<br>";
}
?>

Kullanılan kodlamayı şimdide açıklaması ile birlikte yazalım.

PHP Kod:
<?php
define
('DIR_APPLICATION','C:/inetpub/wwwroot/opencart/catalog/');
$action action('common/maintenance/check');

function 
action($route$args = array()) {

$path '';
//$parts = Array ( 0 => common 1 => maintenance 2 => check );
$parts explode('/'str_replace('../'''$route));

//$parts dizisi döngü ile saydırılır
foreach ($parts as $part) {

//common
//common/maintenance
$path .= $part;

//$path yolu bir dizin ise
if (is_dir(DIR_APPLICATION 'controller/' $path)) {
//$path dizin ise onuna / karakteri eklenir.
//örneğimizde dizin sadece common olduğu için
//$path = common/ şeklinde olacak.
$path .= '/';

//dizinin ilk elemanını siler
//örneğimizdeki path da sadece common dizin olduğu için döngünün sadece
//ilk aşamasında  $path dizin ise kontrolü işleyecektir ve  array_shift
//ile common diziden çıkarılcaktır. maintenance ve check kalacak.
array_shift($parts);

//dizin ise aşağıdaki kodlar atlanarak bir sonraki sıraya geçilsin
continue;
}

//$path yolu bir dosya ise
if (is_file(DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php')) {

//DIR_APPLICATION . controller/common/maintenance.php
$thisfile DIR_APPLICATION 'controller/' str_replace('../'''$path) . '.php';

//Controllercommonmaintenance
$thisclass 'Controller' preg_replace('/[^a-zA-Z0-9]/'''$path);

//ile maintenance diziden çıkarılcaktır. check kalacaktır.
array_shift($parts);

//herhangi bir dosyaya ulaşılırsa(dizin değil) yukarıdaki işlemden sonra
//foreach döngüsünden çıkılması talimatı verilir.
break;
}
//action sınıfına gönderilen ek parametrelerin kaydı.
if ($args) {
$thisargs $args;
}
}

//ile check diziden çıkarılcaktır. dizi boş kalacaktır.
//array_shift fonksiyonu çıkarılan check değerini geri döndürür.
$method array_shift($parts);

//common/home şeklinde route bilgisi gelseydi $method değeri false olacaktı.
//common/maintenance/check şeklinde route bilgisi geldiğinde $method değeri check
//olarak dönecektir.
if ($method) {
$thismethod $method;
} else {
$thismethod 'index';
}
echo 
'$route = '.$route."\n<br>";
echo 
'$thismethod = '.$thismethod."\n<br>";
echo 
'$thisclass = '.$thisclass."\n<br>";
}
?>

Opencart Action Sınıfının Amaç ve Görevi bu şekildedir. Açık kaynak kod olan bir sistemi kullanma için sistemi iyi anlamak gerekir. Sistemide ancak akış diyagramını ve kodlama yapısını bilmekle anlayabilirsiniz. Opencart kodlama altyapısı üzerine yazılarımız devam edecektir.

©duzgun.com Harici yayınlanması yasaktır.

üşüyoruz düzgün reyiz dhnin 1.üyesi forumumuzun fosili lütfen geri dön Sad
27-08-2014 17:52
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
Yeni Cevap 


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Opencart Ücretli Destek ve Özel Tema Tasarımı oscommerce2626 0 1,679 17-03-2016 01:53
Son Mesaj: oscommerce2626
  Opencart 2.0 Gün yüzüne Çıktı gulendam 5 4,651 28-12-2014 22:22
Son Mesaj: gulendam
  OpenCart Registry duzgun 2 4,044 04-08-2014 17:18
Son Mesaj: uveybaba
  Opencart 1.5 Attribute & Options Table DB Diagram duzgun 6 6,465 04-08-2014 17:17
Son Mesaj: uveybaba
  Opencart Ön Kontrol(Front Controller) duzgun 1 3,148 02-06-2014 14:13
Son Mesaj: rezaradmehr
  opencart 1.5.1.3.1 Çıkmış yunusdogan 2 3,259 02-06-2014 14:12
Son Mesaj: rezaradmehr

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi