Segmentfault 用的架構裡的Data模式是什嗎?

來源:互聯網
上載者:User
Segmentfault 用的架構裡的Data模式是什嗎?

在 http://www.infoq.com/cn/news/2012/09/... 中提到的。

回複內容:

Segmentfault 用的架構裡的Data模式是什嗎?

在 http://www.infoq.com/cn/news/2012/09/... 中提到的。

在SegmentFault架構中我們把Data定義為一個資料管理對象,主要方便在模板中展現。它可以展現單個資料,也可以展現多個資料,這主要是通過繼承Iterator介面來實現的迭代器功能。比如我們展示下從資料庫取出資料到頁面展示的效果

在Action中我們會這樣寫

// 從model中取出資料$questions = $this->questionModel->listQuestions();// 將數組放入迭代器$this->questions = new Data_Question($questions);// 展現模板$this->view->render('questions.php');

到View中我們就可以操作Data_Question對象了

url(); ?>">title(); ?>

summary(100, '...'); ?>

可以看出來它的用法大大簡化直觀,你不需要echo了,因為我們在Data基類中幫你用__call函數實現了通過欄位名作為方法名直接輸出的工作,當然你也可以echo $q->title,因為我們也對__get函數做了處理,你可以直接調用當前的欄位。

更重要的是配合緩衝技術的使用,我們可以達到非常夢幻的方法,比如問題作者$q->user,它可以直接返回一個Data_User的對象,那麼我們就可以做到使用的時候再查詢,想用什麼資料就寫什麼資料,比如我們輸出每個問題的作者相關資訊

user->url(); ?>">user->name(); ?> . user->rank(); ?>

這隻是些最基本的用法,還有更多複雜的用法就不一一介紹了,比如輸出欄位的時候可以帶參數等等

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.