تحديث تطبيق الويب من Zend Framework 1.7 إلى 1.8
-
03-07-2019 - |
سؤال
أحاول تحديث مشروعي الحالي من 1.7 إلى 1.8.ما الذي يجب علي تغييره حتى لا ينكسر؟
المحلول
ومعظم ميزات لا تزال تعمل مع رمز القديمة. محاولة بها على بيئة الاختبار وقراءة سجل التغيير ZF. شيء واحد مهم هو أن محمل تعمل بشكل مختلف الآن. خاصة إذا كنت تستخدم autoload.
وحتى 1.7
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
ومنذ 1.8
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Namespace_');
نصائح أخرى
اجابة قصيرة:
قم بتشغيل مجموعة الاختبار الخاصة بك وتحقق من النتائج ;)
اجابة طويلة:
أتذكر نقطتين حيث تم كسر التوافق مع الإصدارات السابقة:
إذا لم يقم التمهيد الخاص بك بتعيين Zend_Locale بشكل صحيح، فسيقوم ZF >= 1.7.2 بطرح استثناء مفاده أنه لا يمكنه اكتشاف اللغة المحلية للمتصفح إذا قمت بتشغيل برنامج نصي عبر وحدة التحكم.
في إطار زند 1.8 تم تعديل منشئ Zend_Controller_Action.
ويجب أن أذكر هذا، لأنه كسر طلبي حتى وجدت هذا الخطأ بعد ساعات من التصحيح (لسبب xDebug ولا PHP نفسه أظهر لي أن منشئ في صفي Controller_Action مخصصة ليست هي نفسها كما في Zend_Controller_Action بعد الآن ).
وهكذا تضطر إلى تغيير منشئ الخاص بك من
public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, $invokeArgs = array())
إلى
public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array())