Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:88288 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 59309 invoked from network); 17 Sep 2015 21:31:11 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 17 Sep 2015 21:31:11 -0000 Authentication-Results: pb1.pair.com header.from=lester@lsces.co.uk; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=lester@lsces.co.uk; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain lsces.co.uk from 217.147.176.214 cause and error) X-PHP-List-Original-Sender: lester@lsces.co.uk X-Host-Fingerprint: 217.147.176.214 mail4-2.serversure.net Linux 2.6 Received: from [217.147.176.214] ([217.147.176.214:42979] helo=mail4.serversure.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id FE/30-56569-C113BF55 for ; Thu, 17 Sep 2015 17:31:10 -0400 Received: (qmail 19658 invoked by uid 89); 17 Sep 2015 21:31:04 -0000 Received: by simscan 1.3.1 ppid: 19651, pid: 19655, t: 0.4085s scanners: attach: 1.3.1 clamav: 0.96/m:52/d:10677 Received: from unknown (HELO ?10.0.0.8?) (lester@rainbowdigitalmedia.org.uk@86.160.91.166) by mail4.serversure.net with ESMTPA; 17 Sep 2015 21:31:04 -0000 To: internals@lists.php.net References: <55E6EC36.6090301@gmail.com> <9AF329EC-99A5-412D-A52B-432627A5520F@gmail.com> <6F4D91EE-B56E-4B83-B1AF-598C3F6897FC@craigfrancis.co.uk> <55F07BA4.2000204@gmail.com> <55F6B911.9080400@gmail.com> <96BE7F01-D04B-483B-B1A3-B45CED6DFCDC@craigfrancis.co.uk> <55F6F08C.1020506@gmail.com> <0BEF6D82-CB5F-49F6-A3A4-3267924A0CDA@thesba.com> <55F72CA9.2060301@gmail.com> <09369945-76FE-4E08-9C2C-15FB0577AD27@thesba.com> <55F752E7.9070801@gmail.com> <55F9B4C7.3050700@gmail.com> <440C64A2-4B4F-4AEF-ACE3-F3A6637EBAB6@thesba.com> <55F9D704.5050002@lsces.co.uk> <55F9EFA2.9020908@lsces.co.uk> <0022A1D9-DC37-4F49-B58E-FBED5AF872BA@gmail.com> <55F9FAB3.2050100@lsces.co.uk> <55FB19CB.7080707@gmail.com> Message-ID: <55FB3117.5040204@lsces.co.uk> Date: Thu, 17 Sep 2015 22:31:03 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <55FB19CB.7080707@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] PHP 7.1 - Address PHPSadness #28? From: lester@lsces.co.uk (Lester Caine) On 17/09/15 20:51, Rowan Collins wrote: >> exists($checklist) { >> is_null($checklist) { create default/empty object(); } >> else { create populate odbject($checklist); >> } else { >> display code in place of object; >> } > > Thanks, this is an interesting example of how the function could be used. I HAD hoped that someone would pick up that the current method does NOT work cleanly! ;) isset($checklist) { Display $checklist } else { is_null($checklist) { // pigging warning if $checklist does not exist! displays without a setting ... so needs a value adding } else { display details why $checklist does not need setting } } > To paraphrase, your 3 states being communicated from the controller to > the view are: > a) Do not use this object, even if you want to. EG Vehicle is not old enough to need MOT > b) If you want this object, you may create a default one. EG No current MOT found > c) If you want this object, create it with these parameters. EG Display date of MOT ... when next one due should not be stored here, only when one is added. > You then want to use null for case (b), so need a "very null" value > (non-existent variable) for case (a). Database takes care of managing the business logic to ensure data is consistent. One could use an invalid date for 'NULL' but these are not consistent between database engines ... NULL is. Reading CAR data does not return an 'MOT' record while it is not needed. 'MOT' does not exist flags logic to display 'first MOT due' from registration date. Putting a date in the 'MOT' field is not the way to handle that. The business logic in decent databases like Oracle and Firebird rely on NULL for many reasons, and while one can return more fields to handle the 'three state' model, NOT returning a field is faster. MOT is crude example, on council systems several sets of data may interact, and the NULL state is significant. -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk