Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

10 أسباب مقنعة لاستخدام إطار زيند

by
Difficulty:IntermediateLength:LongLanguages:

Arabic (العربية/عربي) translation by ahmedmetwaly (you can also view the original English article)

محاولة تحديد أي إطار لاستخدامه لمشروعك الجديد؟ في هذه المقالة، سنذهب في العمق حول لماذا يجب أن يكون إطار زند هو إطار فب الخاص بك في الاختيار.


مقدمة

سواء كنت ستبدء مشروع جديد أو تحسين واحد موجود، في هذه المقالة، لقد قدمت عشرة أسباب لماذا يجب عليك استخدام إطار زيند لمشروعك المقبل، ونأمل أن يساعدك في اتخاذ قرار حكيم.


والسبب 1. توسيع فئات مثل وجود لا غدا

إطار زند إطاركامل وجوه المنحى، وعلى هذا النحو، فإنه يستخدم الكثير من (OO) المفاهيم وجوه المنحى  مثل الميراث والواجهات. هذا يجعل معظم، إن لم يكن كل، من ZF's components قابلة للتمديد إلى نقطة ما. انها تسمح للمطورين لتنفيذ الاختلافات الخاصة بهم من المكونات الفردية دون الحاجة إلى اختراق ZF codebase نفسه. أن تكون قادرة على تخصيصZF بهذه الطريقة يسمح لك لخلق وظائف فريدة من نوعها لمشروعك، ولكن بسبب طبيعته  وجوه المنحى ، عليك أن تكون قادرا على استخدام هذه الوظيفة في مشاريع أخرى كذلك.

مثال

إطار زند يحتوي على عنصر مصادقة واسعة جدا، والتي يمكنك استخدامها للتحقق من صحة البيانات القادمة من النماذج. في زف، يتم التعامل مع النماذج كائنات أيضا، ويتم تمثيلها بواسطة مكون Zend_Form.

لنفترض أنك تريد إنشاء مصمم عناوين ورل مخصص لتقييد إدخال عنوان ورل من المستخدم. وأسرع طريقة للقيام بذلك هي مجرد التحقق من صحة المدخلات باستخدام شيء من هذا القبيل:

ولكن هذا لن نلتزم  بطبيعة  OO ،  بما انه لا يتم استخدامها في سياق النموذج. لحل هذه المشكلة، يمكننا إنشاء فئة Zend_Validator جديدة من خلال توسيع فئة Zend_Validate_Abstract:

هذا يستخدم في الواقع فئة Zend_Uri، التي لديها بالفعل طريقة التحقق من عنوان   URL يمكننا استخدامها. ولكن نظرا لأنه لا يمتد فئة Zend_Validate_Abstract، قمنا بتنفيذ فئة التفاف التي تنفذ الطبقة المجردة المطلوبة. وهذا يتيح لنا استخدام وظيفة التحقق من عنوان URL Zend_Uri في كائنات Zend_Form مثل:

إذا أردنا التحقق من أن عناوين URLs لدينا هي عناوين URLsصالحة لفيديو يوتيوب، فيمكننا إجراء شيء من هذا القبيل:

إذا أضفنا هذا إلى كائن نموذج الموقع كمصادق، فسيضمن أن جميع عناوين ورل المرسلة تبدأ بالبادئة الصحيحة لعنوان ورل لفيديو يوتيوب.


Reason 2. Object-oriented Goodness


الصورة مجاملة من http://www.developer.com

في إطار زند، كل شيء هو كائن، كما ثبت في المثال أعلاه. هذا يطرح مساوئه، مثل جعل الأمور أكثر تعقيدا لرمز. ميزته الرئيسية، رغم ذلك، هو القدرة على اتخاذ قابلية إعادة الاستخدام الرمز، ولأن لا أحد يحب أن تتكرر، وهذا أمر جيد جدا.

مثال

لدينا فعلا لدينا فئة Zend_Validate_Url و Form_Site من المثال أعلاه، لذلك دعونا نعيد استخدامها في هذا المثال.

إليك ما سيبدو عليه في المتصفح:

إذا حاولت إرسال عنوان ورل غير صالح، يمكنك الاطلاع على أداة التحقق من عناوين ورل في العمل:

هنا، يمكنك معرفة ما سيحدث إذا قمت بإدخال عنوان ورل صالح:

كما ترون، لم يكن لدينا تكرار  رمز موضوع النموذج.

"يمكن استخدام الفصول Zend_Validate بطرق أخرى أيضا، ليس فقط في سياق الطبقات Zend_Form، يمكنك ببساطة إنشاء فئة Zend_Validate واستدعاء الأسلوب إسفاليد (المعلمة $)، وتمريرها القيمة التي تريد التحقق من صحتها."


السبب 3. استخدام ما تحتاجه، ننسى كل شيء آخر

صورة مجاملة من http://dev.juokaz.com

من خلال التصميم، إطار زند هو مجرد مجموعة من الطبقات. عادة، عليك استخدام مكونات زند MVC لإنشاء مشروع ZF-تعمل بكامل طاقتها، ولكن في أي حالة أخرى، يمكنك فقط تحميل المكونات التي تحتاج إليها. زف مزدوج جدا، مما يعني أننا يمكن الاستفادة من مكونات المكتبات الفردية، بدلا من الإطار ككل.

إذا كنت تبحث عن مقالات إطارية أخرى، ربما كنت قد سمعت عن مصطلح الإطار الغراء. زف، افتراضيا، هو إطار الغراء. طبيعته المزدوجة يجعل من السهل استخدام "الغراء" إلى التطبيق الخاص بك القائمة بالفعل.

هناك نقاش بين استخدام أطر الغراء مقابل الأطر مكدس كامل. مكدس كامل الأطر هي تلك التي توفر لك كل ما تحتاجه لإنشاء المشروع الخاص بك، مثل تطبيقات ل ORM أو توليد تعليمات برمجية أو السقالات. تتطلب الأطر كاملة المكدس أقل قدر من الجهد لإنشاء مشروع، ولكنها تقصر من حيث المرونة، لأنها تفرض اتفاقيات صارمة على المشروع الخاص بك.

مثال

لنفترض أنك بحاجة إلى طريقة لاسترداد معلومات حول فيديو معين على يوتيوب. Zend_Gdata_Youtube هو مكون زف الذي يسمح لك بالوصول إلى البيانات من يوتيوب عبر واجهة برمجة تطبيقات غداتا. استرداد معلومات الفيديو بسيط مثل:

نموذج التعليمات البرمجية من باب المجاملة دليل جوجل المطور

سوف ينتج هذا الرمز:

شيء واحد نلاحظi هنا: هذا العنصر إطار زند (GData) هي مكتبة فب الرسمية التي أقرتها جوجل للوصول إلى  APIلها. وتتيح لنا طبيعة الإطار المنفصلة استخدام العنصر في أي مشروع، بغض النظر عن الإطار الذي استخدمناه لبناءه.


السبب 4. فإنه يتيح لك القيام بالكثير من الأشياء!

واحدة من الأشياء أحبها أكثر عن إطار زند هو أن لديها الكثير من المكونات. هل تحتاج إلى وسيلة لمصادقة مستخدم؟ استخدم Zend_Auth. تحتاج إلى التحكم في الوصول إلى الموارد الخاصة بك؟ ابحث عن Zend_Acl. تحتاج إلى إنشاء بعض الأشكال؟ لدينا نموذج زند. تحتاج إلى قراءة تغذيةRSS؟ يمكنك استخدام تغذية زند لذلك. انها في الأساس سكين الجيش السويسري من PHP classes!

زند يأتي في الواقع مع بعض العروض التوضيحية التي تظهر كيفية استخدام مكوناتها المختلفة:

لعرض هذه، فإن أفضل طريقة هي ببساطة تحميل النسخة الكاملة من إطار زيند واختبارها على الجهاز الخاص بك.

للحصول على قائمة كاملة بجميع المكونات، يمكنك التحقق من دليل إطار زند.


السبب 5. لا تنفيذ نموذج - اختر مغامرة الخاصة بك!

صورة مجاملة من http://www.vintagecomputing.com

هذا هو في الواقع واحدة من الأسباب معظم المطورين لا تستخدم إطار زند - ليس لديها أي نموذج التنفيذ من تلقاء نفسها. بالنسبة لأولئك الذين لا يعرفون ما هو النموذج، انها M في مفك، والتي تقف على "نموذج عرض تحكم"، وهي بنية البرمجة التي تستخدمها معظم أطر فب.

هل هذا يعني أن إطار زند هو مجرد إطار "VC"؟

نعم ولا.

نعم، انها إطار VC  لأنه ليس لديها نموذج تنفيذ الخاصة بها. وهذا يجعل من الصعب على بعض الناس استخدام ZF، وخاصة إذا كانوا قادمين من إطار الذي لديه تنفيذ نموذج (مثل  CakePHP, Symfony, or even Ruby on Rails.).

من ناحية أخرى، لا، انها إطار مفك أيضا، منذ وبصرف النظر عن توفير طرق عامة للوصول إلى قاعدة البيانات (باستخدام Zend_Db)، فإنه في الواقع لا يزال يعتمد على نوع من تنفيذ نموذج. ما يفعله بشكل مختلف هو أنه يترك هذا النوع من التنفيذ يصل إلى المطور ñ التي يقول البعض يجب أن تكون الحالة لأن النماذج هي في الواقع حيث منطق الأعمال من التطبيق يقيم، وبالتالي، فهي ليست شيئا التي يمكن تطويرها كما وهو مكون عام. زند إطار فلسفة تنص على أن تنفيذ نماذج فريدة من نوعها ل بروجيكتوت من المستحيل لخلق التنفيذ مجرد منه لأنها لا تعرف حقا ما تحتاجه. وهم يعتقدون أن النماذج يجب أن تنفذ من قبل المطورين أنفسهم.

كيف هذا شيء جيد؟

عدم وجود تنفيذ نموذج يعني أن المطور هو حر في استخدام أي وسيلة لديه لتنفيذ ذلك، أو حتى مجرد دمج التطبيقات القائمة. كونها خالية من القيود المحددة مسبقا، ثم يسمح المطور لإنشاء تطبيقات أكثر تعقيدا، بدلا من مجرد تمثيل بسيط من الجداول، وهو كيف يتم إنشاء تطبيقات النموذج المعتادة. تحتوي النماذج على منطق عملك. يجب عدم تقييدها من قبل جداول قاعدة البيانات الخاصة بك. بدلا من ذلك، ينبغي أن تملي وصلات هذه الجداول إلى بعضها البعض. هذا يتيح لك وضع معظم البرمجة البرمجية الخاصة بك في النماذج الخاصة بك، وبالتالي تلبية "Thin Controllers, Fat Models" نموذج مفك.

فكيف يمكنني استخدام إطار زيند إذا لم يكن لدي أي فكرة عن كيفية إنشاء نماذج خاصة بي ؟

للمبتدئين، يظهر البرنامج التعليمي زند الإطار السريع كويستارت لنا وسيلة جيدة لتنفيذ النماذج. في البرنامج التعليمي، أنها تنفذ نهج أورم إلى النماذج، حيث يمكنك إنشاء ثلاثة فيليزو النموذج الفعلي، وهو تمثيل مجرد من الكائن الخاص بك. مخطط، الذي يقوم بتخزين البيانات من قاعدة البيانات إلى النموذج الخاص بك؛ وكائن جدول قاعدة البيانات، والذي يستخدمه مخطط الخرائط للحصول على البيانات. يمكنك التحقق من التعليمات البرمجية في البرنامج التعليمي زف كويكستارت، حيث استخدموا هذا النهج لتنفيذ نموذج بسيط تطبيق سجل الزوار.

بالنسبة لأولئك الذين يسألون "لماذا يجب علي أن أختار هذا بفسي في حين أن الأطر الأخرى تفعل العمل بالنسبة لي؟"، وهذا هو المغزي لسببي المقبل ...


السبب 6. دمج مع كل ما تريد!

طبيعة ديكوبلد زند الإطار يجعل من السهل جدا لدمج المكتبات الأخرى التي تريد استخدامها. لنفترض أنك تريد استخدام سمارتي كنظام القوالب. ويمكن أن يتم ذلك ببساطة عن طريق إنشاء فئة التفاف ل Zend_View_Abstract، والذي يستخدم مثيل سمارتي لعرض وجهة النظر.

هذا يعمل في كلا الاتجاهين، كما يمكنك دمج زف في المكتبات الأخرى كذلك. على سبيل المثال، يمكنك دمج زف في سيمفوني. انهم يخططون للقيام بذلك مع سيمفوني 2، وذلك باستخدام مكونات Zend_Cache و Zend_Log من زف.

مثال

على سبيل المثال، سنحاول استخدام عقيدة لتنفيذ نموذجنا. واستمرارا من مثال الموقع أعلاه، لنفرض أنك نفذت جدول دب لديك على النحو التالي:

لدمج العقيدة في زف، سيكون لدينا للتأكد من أن يتم تعريف الإعدادات المناسبة. لقد تابعت هذا البرنامج التعليمي من dev.juokaz.com حول استخدام عقيدة مع زف.

على افتراض أن كل شيء يعمل بها، سيكون لديك فقط لتوليد ملفات النموذج الخاص بك عن طريق تشغيل ملف فوكب عقيدة- cli.php من البرنامج التعليمي مثل ذلك:

يجب أن تشاهد رسالة النجاح هذه:

بعد ذلك، يمكنك التحقق من المجلد الذي قمت بتعيين كمكان لتخزين الطبقات توليد نموذج.

ثم في فئة وحدة التحكم لدينا، ونحن ببساطة نستخدام لدينا موقع طراز الفئة.

إذا تحققنا من جدول المواقع، فسنرى أن سجلاتنا موجودة

الآن، في كل مرة نقوم بتقديم موقع، وحدة تحكم لدينا سوف تستخدم لدينا نموذج تنفيذ  لانقاذ لقاعدة البيانات الخاصة بنا. أليس هذا لطيفا وسهلا؟ قد يكون الإعداد معقد بعض الشيء، ولكن زائد على الجانب د، مشروعنا هو الآن قادرة على الاستفادة من أداة التي تم تطويرها خصيصا لتنفيذ نموذج. مشروعنا الآن لديه قوة اثنين من التكنولوجيات المتقدمة جدا وراء ذلك.


السبب 7. المبادئ التوجيهية والمعايير

تم تطوير إطار زيند بالاقتران مع دليل مساهم واسع جدا، والذي ينص في الأساس على ما يلي:

  1. يجب على كل مساهم لكل من الوثائق و / أو التعليمات البرمجية، على أي مستوى (إما بضعة أسطر من التعليمات البرمجية أو التصحيح أو حتى مكون جديد) توقيع اتفاقية ترخيص كونتريبوت (كلا).
  2. يجب اختبار التعليمات البرمجية والمشمولة باستخدام إليه اختبار اختبار وحدة. و....
  3. التعليمات البرمجية يجب أن تلتزم "معايير" صارمة الترميز

هذه المبادئ التوجيهية الصارمة تضمن أنك لا تستخدم سوى رمز قابل للقراءة وذات جودة عالية تم اختباره بدقة.


السبب 8. كافة التعليمات البرمجية هو "مذنب حتى تثبت الأبرياء" (المعروف أيضا باسم التنمية تجارب مدفوعة)

صورة المجاملة http://www.codesmack.com/

تطوير اختبار يحركها هو أسلوب برمجة التي تتطلب مطور لكتابة الاختبارات للدالة أنه من المفترض أن التعليمات البرمجية قبل كتابة التعليمات البرمجية للدالة نفسها. من خلال كتابة الاختبارات أولاً، فإنه يضمن أن المبرمج:

  1. يفكر في حالات الاستخدام الممكن لرمز له
  2. يخلق القائمة البيضاء من المدخلات والمخرجات
  3. يجعل من الأسهل ريفاكتورلهذا الرمز
  4. يجعل من السهل لتمرير رمز من شخص إلى آخر

دورة تطوير اختبار يحركها
صورة مجاملة من ويكيبيديا

إطار زند يجعل من السهل قيام تد عبر Zend_Test، والذي يستخدم فبونيت، وهو إطار اختبار وحدة شعبية. فبوينت يتيح لك اختبار ليس فقط وحدات التحكم الخاصة بك، ولكن أيضا مكتبتك ووظائف نموذج. لإضافة إلى ذلك، Zend_Tool، وهو زند الإطار ذو فائدة، بالفعل يجعل أحكام ل فبونيت عند استخدامه لإنشاء المشروع الخاص بك.

دمج فبوينت وإطار زند

إعداد إطار زند و فبوينت ليس من الصعب. في الأساس، بمجرد الانتهاء من ذلك، عليك أن تكون قادرا على استخدام نفس الإعداد لمشاريعك المستقبلية. وكملاحظة جانبية، تفترض الخطوات التالية أنك استخدمت Zend_Tool لسقل بنية مشروعك وملفاته، ولكن يجب أن يكون من السهل نسبيا تغيير الإعدادات الأخرى.

أولا، نحن بحاجة إلى تثبيت فبوينت. أفضل طريقة هي تثبيته عبر PEAR:

بعد ذلك، سنفتح ملف phpunit.xml، وهو ملف شامل تم إنشاؤه بواسطة Zend_Tool. ستجده داخل مجلد الاختبارات في الدليل الجذر لمشروعك. تضاف السطور التالية:

بعد حفظ phpunit.xml، إنشاء ملف جديد داخل نفس المجلد كما phpunit.xml يسمى TestHelper.php. وهذا ملف فب تساعدنا على إعداد البيئة لاختباراتنا.

نحن ثم مخلق لدينا الأصل المراقب المالي حالة اختبار الفئة، والتي سوف جميع لدينا وحدات تحكم تمديد. وهذا سيساعد في تنفيذ الطرق التي عادة ما تكون هي نفسها في جميع فئات اختبار المراقب المالي.

وأخيراً، ونحن إنشاء فئة اختبار وحدة تحكم:

كل ما تبقى هو تشغيل اختبارنا. افتح موجه الأوامر وانتقل إلى مجلد الاختبارات واكتب:

يجب أن يقوم سطر الأوامر بإخراج ما يلي:


فبونيت و زند إطار الإعداد التعليمي و كود مجاملة من http://www.dragonbe.com

السبب 9. المجتمع والتوثيق

نظرا لمكوناتها المتعددة، والتعقيد، ونهج كائن المنحى تماما، إطار زند لديه منحنى التعلم حاد جدا. يصبح من الأسهل للتعلم نظرا لشمولية وثائقها ومجتمع مزدهرة. أولا وقبل كل شيء، الدليل المرجعي مبرمج زند الإطار نفتخر بدليل كامل لجميع مكونات زف، مع أمثلة، رمز، ونظريات الاستخدام.

وبصرف النظر عن هذا، وهناك الكثير من بلوج هناك أن حصة النصائح زند الإطار والحيل. على سبيل المثال،  Phly, boy, phly، بلوج ماثيو وير O'Phinney، مساهم أساسي لإطار زيند، ويوفر الكثير من الأفكار، واستخدامات ذكية، وتفسيرات عنصر لإطار زيند. زند لديها أيضا موقع يسمى زند المطور المنطقة، التي جانبا من نشر الدروس لإطار زند، لديها الاشياء مثل ندوات الإطار زند، دبليو، والمقالات حول فب بشكل عام. موقع آخر، ودعا زند يلقي، ويقدم الكثير من دروس الفيديو المفيدة على مختلف مكونات إطار زند كذلك. وأخيرا وليس آخرا، هناك كتاب على الانترنت مجانا يسمى إطار زند: البقاء على قيد الحياة في نهاية عميقة "كتبه P · draic Brady، آخر مساهم إطار زند.

كما ترون، لا يوجد نقص في الدعم من المجتمع، والوثائق، والمطورين. إذا كانت لديك أية أسئلة أو تحتاج إلى أية توضيحات، فإن البحث السريع باستخدام الكلمات الرئيسية المناسبة يجب أن يمنحك دائما نتائج ذات صلة. إن لم يكن، لا يزال هناك زند الإطار لقوائم البريدية، منتديات إطار زند الرسمية، غير رسمية زند منتديات الإطار أو غير رسمية زند إطار قناة إيرك


Reason 10. Certifications Ahoy!

إذا كنت لا تزال غير مقتنعين بالتعلم واستخدام إطار زيند، فإن هذا هو السبب الذي أشعر به أكثر ما يميز إطار زيند عن الآخرين. زند ليس فقط يقدم شهادة إطار زند، ولكن شهادة فب كذلك. من خلال تقديم الشهادات، زند يساعدك على استخدام خبرتك في فب وإطار زند لتعزيز محفظتك أو السيرة الذاتية. يورد موقع شهادة زيند عددا من الأسباب للحصول على شهادة، وبعضها:

  1. تمييز نفسك عن المنافسين عند البحث عن وظيفة جديدة
  2. الحصول على سيرتك الذاتية / ملاحظات السيرة الذاتية
  3. عرض ملف التعريف الخاص بك في الصفحات الصفراء زند للمحترفين فب
  4. كن جزءا من مجموعة Linkedin Group Exclusively for ZCE's
  5. الحصول على خصومات خاصة على مؤتمرات فند زند في جميع أنحاء العالم

إضافة

فقط للحفاظ على الأمور متوازنة، وهنا لائحة سريعة من الأسباب التي قد لا ترغب في استخدام إطار زند:

  1. منحنى التعلم حاد جدا. ليس من الصعب جدا للمستخدمين المتقدمين فب، ولكن للمبتدئين، وهناك الكثير لتتعلمه!
  2. البصمة الكبيرة.  إطار زند لديه الكثير من المكونات، انها الحجم الكلي هو أعلى نسبيا من الأطر الأخرى. على سبيل المثال، مجلد نظام كودينيتر لديه البصمة 1.5MB مقارنة بصمة 28MB إطار زند ل.
  3. لا أداة سقل صلبة. على الرغم من أن Zend_Tool يقدم بعض الوظائف، فإنه ليس كثيرا مقارنة مع المرافق السقالات من إطارات كاملة كومة مثل كاكيفب أو سيمفوني.
  4. ليست مشتركة ويبهوستينغ ودية. بنية المجلد التي تم إنشاؤها بواسطة Zend_Tool تشير إلى أن المجلد العمومي هو الدليل الوحيد الذي يمكن الوصول إليه عبر هتب ó الذي يفترض أن المستخدم قادرا على إنشاء مضيف ظاهري للمشروع. هذا شيء لا يمكنك القيام به في معظم بيئات استضافة الويب المشتركة.
  5. مغري أيضا. وبما أن كل شيء في فصول منفصلة، فمن الصعب أحيانا تصور كيف يعمل كل شيء. وهذا لن يكون مشكلة مع أطر كاملة مكدسة، لأنها في الغالب رعاية كل شيء بالنسبة لك. وبدون Zend_Tool، سيكون من الصعب للغاية إنشاء هيكل مشروع عمل

الاستنتاج

وقد أحرز الكثير من التقدم في عالم أطر فب في السنوات القليلة الماضية. سأكون صادقا، هناك الكثير من الأسماك في البحر. هناك إطارات مثل  Codeigniter, CakePHPو Symfony التي هي أيضا جيدة للاستخدام. البعض منكم قد يفكر، "لماذا ركز هذا الرجل على إطار زيند؟ لماذا لم يتم تشغيل اختبارات الأداء لمقارنة الأطر المختلفة؟ "لذلك، أجيب على هذا الاقتباس من مقالة مسلية جدا بعنوان" معايير فب الإطار: مسلية ولكن في نهاية المطاف عديمة الفائدة "من قبل P·draic Brady:

لإنشاء مؤشر إيجابي، تحتاج إلى فهم أن جميع الأطر ولدت كاكوام متقيحة من فضلات .وكانوا جميعا يولدون سيئين ويزدادون سوءا مع التقدم في السن. هذا يبدو حزينا جدا، ولكن في الواقع انه حل وسط لا مفر منه بين الأداء والميزات. كما أنه حل وسط بين الأداء وسهولة الاستخدام. لذلك ترى، والأداء يواجه بشكل غير عادل من قبل اثنين من المعارضين: ميزات وسهولة الاستخدام. يتم التضحية بالجميع كالأداء في تلبية احتياجات التطور السريع، والمرونة، والنماذج، وجعل شفرة المصدر الخاص بك تبدو أجمل من الرجل الآخر. كما لو.

ماذا يحدث إذا  بعدت عن أعداء الأداء والقيام ببعض التأييد وراء الكواليس؟ تحصل على ... الانتظار لذلك ... عود من الأداء الإضافي!

عندما يتعلق الأمر بذلك، الإطار الذي اخترته للاستخدام يعتمد حقا على مدى راحة كنت معها. لن يكون أي من هذه الأطر مساعدة لك إذا كنت غير قادر على الاستفادة الكاملة من ميزاتها. يمكنك قضاء أسابيع أو حتى أشهر باستخدام إطار محدد، فقط قمامة في النهاية لأنها فقط ليست مريحة كما استخدامته كما كان مع بعض الاطر الآخر.

لذلك أدعوكم على الأقل محاولة  زند. إذا كان يعمل بالنسبة لك، وهذا أمر عظيم! بالنسبة لي. ولكن إذا لم يكن مناسبا، والمضي قدما في محاولة الآخرين. قريبا بما فيه الكفاية، ستجد الإطار الذي هو مجرد حق لاحتياجاتك.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.