سؤال

منذ وقت طويل اعتدت استخدام "أو أموت" في رمز PHP الخاص بي. خاصة مثل هذا:

$q = mysql_query('......') or die(mysql_error());

من الواضح أن هذا مخز للغاية هذه الأيام ، لكن مبدأ X أو Y لا يزال يتحدث معي. لذلك على الرغم من أنني سأحاول هذا:

$r = $this->exec($query) or throw new Exception('FAIL');

لكن هذا يؤدي إلى خطأ في التحليل! ما هي أفضل ممارسة لمثل هذه العبارات. يجب أن تبدو لطيفة أيضًا (من الواضح!) ...

أنا لا أحب

if ( !($r = $this->exec($query)) ) throw new ...

أو

$r = $this->exec($query)
if ( !$r ) throw new ....

أي مفضلات؟ التظاهر؟ أفضل الممارسات؟ السرعة دائما لطيفة.

هل كانت مفيدة؟

المحلول

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

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

function throw_ex($what) {
  throw $what;
}

function fails() {
  return false;
}

$x = fails() or throw_ex(new exception("failed"));

لا أرى كيف يكتسب هذا أي شيء على ol 'إذا كان البيان.

نصائح أخرى

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

مزيد من المعلومات هنا: http://arjen-nentz.livejournal.com/150464.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top