این که بهترین راه جدا کردن code از Face می تونه اسمارتی باشه .. خودش جایه بحث داره
بهترین یه چیز نسبیه!! من نگفتم بهترین اسمارتی هست. بهترین اون چیزیه که نیازت رو برطرف کنه. اما یکی از بهترین ها همین اسمارتی هست
ا
اما من توی فریم ورک codeigniter دیدم که بسیار جالب عمل کرده بودند و اصلا از تمپلت انجین استفاده نکرده بود ند. بدین صورت که یک فایل رو درون پوشه views قرار می دادید و درون برنامه با استفاده از متد load->view فایل رو صدا می زدید . می تونستید یه آرایه هم به همراه همین متد بفرستید .. بعد از توی فایل می تونستید به آرایه ای که فرستادید دسترسی داشته باشید .
به نظر من برتری این روش این بود که دیگه مثل اسمارتی از فایل tpl استفاده نمی شد و فایل کامپایل نمی شد .
خوب این فریم ورک داره بر مبنای mvc کار میکنه. ما گفتیم برای اینکه mvc رو پیاده کنید باید کد و کنترلر و view رو از هم جدا کنید.
مسلما این بدین معنا نیست که شما باید وردارید از اسمارتی استفاده کنید. این دوستان ما هم تو codeigniter برای این کار تمپلت انجین خاص خودشون رو نوشتن!
حالا دیگه این مسلما نوع دید و فکر شماست که چه جوری میخواید کار کنید هر چیزی به برنامه نویس بستگی داره من خودم به شخصه با فریم ورک ها حال نمیکنم! اصلا لزومی به استفاده ازشون نمیبینم چون معتقدم بدرد کسایی میخوره که هیچ وقت براشون مهم نیست خط به خط برنامه شون داره چیکار میکنه ، فقط میخوان بنویسن که کار کنه!(البته گفتم که این نظر شخصیه منه ، حال نمیکنم با هاشون

)
ولی در کل هر چیزی راه کار هایی داره حتی نوشتن تمپلت انجین ها ، شما یا از یکیشون استفاده میکنی یا میشینی خودت یه چیزی برای اینکار طراحی میکنی مثل همین دوستان codeigniter!
کد:
Model-View-Controller
CodeIgniter is based on the Model-View-Controller development pattern. MVC is a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.
The Model represents your data structures. Typically your model classes will contain functions that help you retrieve, insert, and update information in your your database.
The View is the information that is being presented to a user. A View will normally be a web page, but in CodeIgniter, a view can also be a page fragment like a header or footer. It can also be an RSS page, or any other type of "page".
The Controller serves as an intermediary between the Model, the View, and any other resources needed to process the HTTP request and generate a web page.
CodeIgniter has a fairly loose approach to MVC since Models are not required. If you don't need the added separation, or find that maintaining models requires more complexity than you want, you can ignore them and build your application minimally using Controllers and Views. CodeIgniter also enables you to incorporate your own existing scripts, or even develop core libraries for the system, enabling you to work in a way that makes the most sense to you.
ا
بدین صورت که یک فایل رو درون پوشه views قرار می دادید و درون برنامه با استفاده از متد load->view فایل رو صدا می زدید . می تونستید یه آرایه هم به همراه همین متد بفرستید .. بعد از توی فایل می تونستید به آرایه ای که فرستادید دسترسی داشته باشید .
به نظر من برتری این روش این بود که دیگه مثل اسمارتی از فایل tpl استفاده نمی شد و فایل کامپایل نمی شد .
حال چیزی که هست ، خوب شما این مزیت رو میگی منم میگم ،اسمارتی با همون کامپایل با عث افزایش سرعت میشه.
فایل های tpl مگه چین ، 4 تا خط html و 4 تا دستور اسمارتی که خیلی قشنگ کار شده.
شما میای اول فایلت یه شی اسمارتی درست و متغییر هات رو اساین میکنی، در پایان هم با display هر فایلی رو میخوای نشون میدی!!
حالا ببین کداینتگر چیکار میکنه:
میاد تو view یه فایل php که کد های html و غیره هست رو میگیره! حالا تو اون کد میاد کنترلر مورد نظرش رو اینکلود میکنه
<code>system/application/controllers/welcome.php</code>
حالا تو کنترلر کد هاش رو مینویسه:
کد:
<?php
class Welcome extends Controller {
function Welcome()
{
parent::Controller();
}
function index()
{
$this->load->view('welcome_message');
}
}
?>
به نظر من یکی که اصلا جالب نیست!
حالا برای هر کنتر لر هم باید یه فایل تو ویو داشته باشید که تعدادشون رو بالا میبره! پس درسته که tpl نداره ولی کدهاش تو یه فایل php هست که خوب کامپایل هم نمیشه پس مشکل داره (پون تا اونجایی که من میدونم اسمارتی به این خاصیت کامپایلش میباله و ادعا میکنه این کار سرعت اجرای برنامه رو بالا میبره ، درضمن هر وقت قالب تغییری پیدا کنه این فایل ها کامپایل میشن نه هر وقت که یه نفر سایت رو مشاهده کنه)
ولی در کل خودش به عنوان یه فریم ورک مزایای ارزشمند داره و تمپلت انجینش هم برای خودش نوشته شده که برای خود این فریم ورک ارزشمنده ، منکرش نیستم.
در کل لپ کلام میشه این که:
خوب اینها تمپلت انجین خودشون رو ، برای خودشون نوشتن -> مشکلی نیست شما هم برای خودت یکی بنویس که جالب تر از اون کار کنه!!!
اسمارتی رو همه جا میشه استفاده کرد و به راحتی با کد شما مچ میشه! ولی این رو منوط به استفاده از این فریم ورک هستید و با محدودیت هاش باید کنار بیاید.
و در پایان شما برنامه نویسید و باید کاری رو کنید که دوست دارید و به صلاحه ، من به شخصه فقط ابزار معرفی کردم پس اگر میبینید نیازی رو برطرف نمیکنه به فکر ابزار بهتری باشید یا از کد های آماده یا نوشتن کد توسط خودتون.
وگرنه شما چه از این استفاده کن ، چه از اون به من چیزی نمیرسه که بخوام خودمو بیچاره کنم که از کدوم یکی استفاده کنید. صلاح کشور خویش خسروان دانند.
اما فکر نمیکنم اسمارتی با اون همه امکانات یکی از بهترین ها نباشه!
موفق باشید.