Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:56628 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 71035 invoked from network); 25 Nov 2011 10:21:35 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Nov 2011 10:21:35 -0000 Authentication-Results: pb1.pair.com smtp.mail=krebs.seb@googlemail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=sebastian.krebs.berlin@googlemail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain googlemail.com designates 209.85.214.42 as permitted sender) X-PHP-List-Original-Sender: krebs.seb@googlemail.com X-Host-Fingerprint: 209.85.214.42 mail-bw0-f42.google.com Received: from [209.85.214.42] ([209.85.214.42:36363] helo=mail-bw0-f42.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id FF/94-45850-E2C6FCE4 for ; Fri, 25 Nov 2011 05:21:35 -0500 Received: by bkbzt4 with SMTP id zt4so4292532bkb.29 for ; Fri, 25 Nov 2011 02:21:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=mime-version:sender:x-google-sender-delegation:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to :content-type; bh=bV9Lr0I8TGbSpazXkqntSowAduwsidxH+SgS4RF6UPU=; b=VSSMXCjjzyrcEgHWKK2y9VJgST9wJktKH55QyKS9/pQ7FU4D6vSDChfvHQ53osv5P/ jWkxNSgltMpvjuM/hviPLutmFJsEhxY24S+lL/WXDDOqR8DISchRszCvy0ibLWi/yNdG h1PupFASy1uVYR8wcvM8E2iqaSL1QKzCWzL24= MIME-Version: 1.0 Received: by 10.205.135.6 with SMTP id ie6mr5479510bkc.69.1322216490481; Fri, 25 Nov 2011 02:21:30 -0800 (PST) Sender: sebastian.krebs.berlin@googlemail.com X-Google-Sender-Delegation: sebastian.krebs.berlin@googlemail.com Received: by 10.204.22.11 with HTTP; Fri, 25 Nov 2011 02:21:30 -0800 (PST) In-Reply-To: References: <4ECEC513.9040706@mohiva.com> <06acba1a1c53ac9527beb807787c92aa@mohiva.com> Date: Fri, 25 Nov 2011 11:21:30 +0100 X-Google-Sender-Auth: Gv2DPTggew7_EwJtyHZLvXtyB9c Message-ID: To: internals@lists.php.net Content-Type: multipart/alternative; boundary=000e0cdfc5cc3b37a204b28c848f Subject: Re: [PHP-DEV] Re: [RFC] Autoloader Error Handling From: krebs.seb@googlemail.com (Sebastian Krebs) --000e0cdfc5cc3b37a204b28c848f Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 2011/11/25 Ferenc Kovacs > The problem with fatal, that you have no way (by the standard means, but > you can somehow manage it through the usage of output buffers or > register_shutdown_function, but thats ugly, and can change in the future) > to intercept and gracefully terminate your application, which is an often > needed feature. > AFAIK E_FATAL should be only used where the engine is left in an unstable > state, which isn't really true here. > Trying to interact with a non-existing class is not an unstable state? there are two situations: 1. The application is broken, thus the FATAL is appropriate 2. The application tries to work with dynamic class names. If it doesn't use class_exists() before, its broken and FATAL is appropriate So I think that E_RECOVERABLE_ERROR would be more appropriate here, and in > general we use E_ERROR many places where E_RECOVERABLE_ERROR would be mor= e > suitable, but thats another topic. > > For clarification: I'm talking about the E_FATAL which currently will be > called if none of the registered autoloaders were able to load the > requested class. > > On Fri, Nov 25, 2011 at 9:56 AM, Sebastian Krebs > wrote: > >> Hi, >> >> Just to throw my 2 cent in: Im with Micheal. An application, that tries = to >> access a class, that doesn't exists, is broken and a FATAL is valid. Thi= s >> application doesn't need try-catch, but a bugfix (and if it is already >> released: A better testing management). >> On the other side an application, that makes use of dynamic class names >> should make use of class_exists() in any case. An exception after callin= g >> class_exists() is just bad, but the classloader cannot distinguish betwe= en >> the reasons, why it is called. >> >> 2011/11/25 Christian Kaps >> >> > Am 25.11.2011 08:24, schrieb Michael Wallner: >> > >> > On Thu, 24 Nov 2011 23:28:35 +0100, Christian Kaps wrote: >> >> >> >> >> >>> https://wiki.php.net/rfc/**autoloader_error_handling< >> https://wiki.php.net/rfc/autoloader_error_handling> >> >> >>> >> >>> >> >> Throwing an exception or fatal error in an autoloader >> >> absolutely does not make any sense in my eyes. >> >> Projects doing this should step back and think a >> >> minute about what they dare. >> >> >> >> Mike >> >> >> > >> > Hi, >> > >> > how would you bring your application in a consistent state after a cla= ss >> > couldn't be loaded. I do this by adding a try/catch block around my >> code. >> > >> > try { >> > new Application(); >> > } catch (Exception) { >> > // collect data >> > // send mail >> > // redirect to maintenance page >> > } >> > >> > An other question is, if the autoloader work silent and I write: >> > >> > new NotExistingClass(); >> > >> > I think in this case the engine will also trigger a fatal error. So in >> my >> > eyes it is regardless of whether it trigger a fatal error in the >> autoloader >> > or the autoloader works silent. Both cases ends in a fatal error. Or a= m >> i >> > wrong here? >> > >> > Christian >> > >> > >> > -- >> > PHP Internals - PHP Runtime Development Mailing List >> > To unsubscribe, visit: http://www.php.net/unsub.php >> > >> > >> > > > > -- > Ferenc Kov=E1cs > @Tyr43l - http://tyrael.hu > --000e0cdfc5cc3b37a204b28c848f--