Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:99003 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 6288 invoked from network); 10 May 2017 16:12:19 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 May 2017 16:12:19 -0000 Authentication-Results: pb1.pair.com smtp.mail=derokorian@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=derokorian@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.218.52 as permitted sender) X-PHP-List-Original-Sender: derokorian@gmail.com X-Host-Fingerprint: 209.85.218.52 mail-oi0-f52.google.com Received: from [209.85.218.52] ([209.85.218.52:35107] helo=mail-oi0-f52.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id A0/E1-26564-2EB33195 for ; Wed, 10 May 2017 12:12:19 -0400 Received: by mail-oi0-f52.google.com with SMTP id l18so334496oig.2 for ; Wed, 10 May 2017 09:12:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=gLJr5sL4h+oywUtrie4Vt9TnYC9pH/UWVuCAaP3clx8=; b=GzkwN4Ab/MgctAtUwjh9dz3R6Iwzm7TwPhq5hMvyyEHtPdEoTEC0eWoH8+bq7vV/jB PmJqJ4oEwc75blJe+XHHY+Ac6NPaEUlTUzzhaDpf3Qt4MWxAe1kM8dZhilLVxwCQx+YY a09bYe4LnwCwShZaDJ9s9NLT/etwDvorMClxUGOQNQRBV2ubeZBGdNWA5v8OfBECqtCe L0TBwOUut+iWINXRSk2ihvCzENaOeXia/HTUC29kzRxALa7AEIRbQ4SZT3MocPOdHehm NCLxXF9ZjpFpKxpqc5SLTWRqMlwoyyA+3415VCwJaLrWZruZk86NuYWDfmdM5rvmcsgc 0GTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=gLJr5sL4h+oywUtrie4Vt9TnYC9pH/UWVuCAaP3clx8=; b=K9kqbf9pbcSnbZ2qpks36RZigCeZFYA1XCA+5WBsTaO1cG9FMVWIvyCmDsTYXbIleb hkcah4/rkO+zuNSe63GzZs9W0nrUHiJZiKzvySkzr63ddNiDUdnEP3M10yU1ruJUHh4v o9kcs4kfTSXD83//170SUkSC9rWbJzZv/ek8vKjvAL6gMiyfGMn60kG/MZtTvocHq6Zu QVPR+t+DVO/bKT4VJrEeDoHS/G9pKL/y0NIsGyyHf4lB74MFullcmeZc+Ayy7ziTwQ9T MhNHOc3GEg34UD0FAk+Kh0WofcKTTi38+X0tHP6Fk72vHWExDq6o8YIjXTxygEsq2VMr bmkw== X-Gm-Message-State: AODbwcCTMn/v2tSnI4RaXkAD9VMpiULok0T2yzBllKOO4Z3rKfUZSfIS 0N1XFnk9e7QjLZNV13K/XOhDeQsZ1Q== X-Received: by 10.157.45.231 with SMTP id g94mr2792922otb.229.1494432735729; Wed, 10 May 2017 09:12:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.40.87 with HTTP; Wed, 10 May 2017 09:12:15 -0700 (PDT) In-Reply-To: References: Date: Wed, 10 May 2017 10:12:15 -0600 Message-ID: To: Csonka Titus Cc: "internals@lists.php.net" Content-Type: multipart/alternative; boundary=94eb2c0470ae5a9e6b054f2dbc6f Subject: Re: [PHP-DEV] my concept ( new PDO FETCH MODE ) From: derokorian@gmail.com (Ryan Pallas) --94eb2c0470ae5a9e6b054f2dbc6f Content-Type: text/plain; charset=UTF-8 Couldn't you just use return $stmt->fetch() ?: null; to return null instead of false? On Wed, May 10, 2017 at 9:51 AM, Csonka Titus wrote: > Greetings, > > I want to propose a new PDO FETCH MODE. > > Whenever I fetch(http://php.net/manual/en/pdostatement.fetch.php) a > class, it returns the new instance of the requested class or false in any > other cases. > > However with the new php7.1 return type declaration(https://wiki.php. > net/rfc/nullable_types) Upon defining a nullable class as return type, I > need to add extra code at the end of my function if my database don't have > a row to return. > > PDO will return a false, my function will trigger a fatal error. > > My proposal is to add a new style of fetch(PDO::FETCH_NULL_IFNODATA), > returning null if the PDOStatement::fetch has no result. > > //this function will trigger a fatal error if the user is not found > function getUserByName($name): ?UserClass{ > $pdo = new PDO(dsn, user, pass, driver_options); > $sql = "SELECT * FROM user WHERE name = {$pdo->quote($name)}"; > $stmt = $pdo->query($sql); > $stmt->setFetchMode(PDO::FETCH_CLASS,'UserClass'); > > return $stmt->fetch(); > } > > //this function will return null representing the absent of user > function getUserByName($name): ?UserClass{ > $pdo = new PDO(dsn, user, pass, driver_options); > $sql = "SELECT * FROM user WHERE name = {$pdo->quote($name)}"; > $stmt = $pdo->query($sql); > $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_NULL_ > IFNODATA,'UserClass'); > > return $stmt->fetch(); > } > > Looking forward to you answer > > Best regards > Miklos Csonka > --94eb2c0470ae5a9e6b054f2dbc6f--