• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
نحوه استفاده از زند فریم ورک در پروژه های بزرگ
#1
شما چطور از زند در پروژه هاتون استفاده می کنین؟ وقتی یه پروژه بزرگ میشه چطور از فریم ورک زند استفاده می کنین.
اینجا به طرح ریزی برای استفاده از فریم ورک زند در پروژه های بزرگ می‌پردازیم و به چند مثال اشاره می کنیم.
ابتدا باید به این نکته اشاره کنم که استفاده از کلاسهای زند به صورت تنها کار درستی نیست و بهتره کلاسهای خودتون رو که از کلاس‌های zend گرفته شده رو استفاده کنید. برای این منظور بهتره یه پوشه مثلا با نام Vahid در پوشه library در کنار پوشه zend قرار بدید حالا باید این namesapce رو اضافه کنیم برای اینکار می تونید داخل فایل application.ini این خط رو باید اضافه کنید.
کد:
autoloaderNamespaces[] = "Vahid"

حالا ما یه سری کلاس می‌تونیم داشته باشیم که با
کد:
Vahid_
شروع شده باشن رو از این پوشه include می کنه (دقیقه مثل کلاسهای Zend)

حالا می‌خوایم یه مثال بزنم
توی کلاسهای Zend_Db_Table_Abstract ما نیاز به متدی به نام getTotal() داریم. برای این منظور من می‌خوام یه کلاس با نام Vahid_Db_Table_Abstract تعریف می کنیم برای اینکار یه پوشه با نام Db در داخل پوشه Vahid درست می کنیم و در داخل پوشه Db یه پوشه با نام Table درست می کنیم و یه فایل با نام Abstract در درون پوشه Table درست می کنیم و حالا کلاس خودمن رو به این صورت در داخل فایل تعریف می کنیم

کد پی‌اچ‌پی:
class Vahid_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
    
    public function 
getTotal($select=NULL){
        if (!(
$select instanceof Zend_Db_Table_Select) && $select!==NULL) {
            throw new 
Zend_Exception("\$select must Object From Zend_Db_Table_Select");
        }
        if(
$select===NULL){
            
$select=$this->select();
        }
        
$select->from($this,
            array(
'COUNT(*) as count'));
        
        
$row $this->fetchRow($select);
        return 
$row->count;
    }




تا اینجا رو داشته باشین در ادامه ایده هایی رو که می‌تونم توی zend پیاده کنم در تاپیک‌های بعد (که در ادامه همین تایپک هست) رو ارائه میدم
البته اگر خواهان داشته باشه
  پاسخ
#2
ممنون . من منتظر ادامه ی بحث هستم
  پاسخ
تشکر شده توسط : parvane
#3
http://forum.iranphp.org/Thread-%D9%BE%D...d-DB-Table
  پاسخ
تشکر شده توسط :
#4
وقتی می خوایم BasePath رو تغییر بدیم مثلا پوشه vahid می خوایم یه جای دیگه ای باشه. چه متغیری را باید به application.ini اضافه کنیم؟
آقا ضمنا چرا تابع
کد پی‌اچ‌پی:
$db->quote() 
به دو طرف متغیر quote اضافه می کنه؟ مگه معادل mysql_real_escape_string() نیست؟
و چرا من وقتی از db->delete استفاده میکنم خطای زیر رو می ده؟
کد:
Fatal error: Exception thrown without a stack frame in Unknown  on line 0
  پاسخ
تشکر شده توسط :
#5
نمی خواید جواب بدید؟؟!
  پاسخ
تشکر شده توسط :
#6
ببخشید تاپیک رو ندیدم
واسه سوال اول توی فایل index.php در‌ پوشه include می‌ تونید یه path دیگه‌ اضافه کنید
در‌ ضمن ‌در‌ مورد تابع هم این گفته زند هست
نقل قول:Note that the return value of quote() includes the quote delimiters around the string. This is different from some functions that escape special characters but do not add the quote delimiters, for example mysql_real_escape_string().
این‌ تابع یه پارامتر دوم هم می گیره. (که البته فکر کنم توی منوال نگفته باشه) پارامتر دوم پیشفرض string هست‌ به‌ همین دلیل کوتیشن اضافه می کنه. می تونید integer بزارید تا به عدد تبدیل کنید و کوتیشن نذاره.

در مورد سوال دوم چه جوری استفاده می کنید می زنید db->delete؟؟؟؟ . احتمال خیلی خیلی زیاد اشکال از سینتکس php تون‌ هست. نمونه کدتون رو بزارید
  پاسخ
تشکر شده توسط :
#7
راستی‌ این هم توی داکیومنت زند بود
نقل قول:Each Zend_Db_Adapter class has encoded the names of numeric SQL datatypes for the respective brand of RDBMS. You can also use the constants Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, and Zend_Db::FLOAT_TYPE to write code in a more RDBMS-independent way.
  پاسخ
تشکر شده توسط :
#8
ایینم از کد ولی مشکلی تو سینتاکس نمی بینم:
کد پی‌اچ‌پی:
$result $this->db->delete($this->tableName"session_id = " $session_id); 
  پاسخ
تشکر شده توسط :
#9
از $this->db و $this->tableName مطمئن هستید. چون خودم با این مشکل بر می خوردم و مشکل از ریسورهام بوده
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان