Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:99002 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 4569 invoked from network); 10 May 2017 16:00:07 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 May 2017 16:00:07 -0000 Received: from [127.0.0.1] ([127.0.0.1:28281]) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ECSTREAM id 1D/81-26564-60933195 for ; Wed, 10 May 2017 12:00:07 -0400 Authentication-Results: pb1.pair.com smtp.mail=Titus1006@msn.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=Titus1006@msn.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain msn.com designates 40.92.64.64 as permitted sender) X-PHP-List-Original-Sender: Titus1006@msn.com X-Host-Fingerprint: 40.92.64.64 mail-oln040092064064.outbound.protection.outlook.com Received: from [40.92.64.64] ([40.92.64.64:65248] helo=EUR01-DB5-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id FA/81-26564-61733195 for ; Wed, 10 May 2017 11:51:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=msn.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=UUzvs0l/q8mhuLVUnJwOsa9RsNupFRaX2hmh5r7AIX8=; b=MSdxaPktvlWf98g7j1UR/vOmc9pjHcoyk4u1xEd6biTjlkmDw5kYQv06b1qHR5AUhQV1KzFAgF0dbJRGXaxr+fQbdPegS255ppXFF9EViqnvrvP9i9dsHm/d087HX9epP+DXDHBd4nh0NHXnagaac0jIEtSe2bRrfsTdjmdTVUMTzXU7T/8i0T97zTBvTJJMa9W/ThtvLiTPROOOCzhq5AT2UtU3ytjIE8rOrXaNMiT9DvDywrbYBeiX1JMuXMARejjqO/u5vPACjyzODZmnBo83mz8Q9PeO7TANVY5McNen4H1tkUWQQG6yCjvE3YYgZpqyA5ggQwX4MMn2ej0tZw== Received: from HE1EUR01FT059.eop-EUR01.prod.protection.outlook.com (10.152.0.53) by HE1EUR01HT211.eop-EUR01.prod.protection.outlook.com (10.152.1.156) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1047.9; Wed, 10 May 2017 15:51:45 +0000 Received: from DB6PR0801MB1736.eurprd08.prod.outlook.com (10.152.0.54) by HE1EUR01FT059.mail.protection.outlook.com (10.152.0.241) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1047.9 via Frontend Transport; Wed, 10 May 2017 15:51:45 +0000 Received: from DB6PR0801MB1736.eurprd08.prod.outlook.com ([10.169.227.7]) by DB6PR0801MB1736.eurprd08.prod.outlook.com ([10.169.227.7]) with mapi id 15.01.1084.015; Wed, 10 May 2017 15:51:45 +0000 To: "internals@lists.php.net" Thread-Topic: my concept ( new PDO FETCH MODE ) Thread-Index: AdLJpMM5bXdxYgrDSomjp3A06uT41w== Date: Wed, 10 May 2017 15:51:45 +0000 Message-ID: Accept-Language: hu-HU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: lists.php.net; dkim=none (message not signed) header.d=none;lists.php.net; dmarc=none action=none header.from=msn.com; x-incomingtopheadermarker: OriginalChecksum:2782F8FD0CEEE915426196383AAC8F42CD6ECA2FC509CDD0F82E6967D37861CB;UpperCasedChecksum:1E4EC8E47DCF7FCBBD12856BDF240E1714FD79B8C7AF9D8EC9DB3BA5ACCC96B8;SizeAsReceived:7993;Count:42 x-tmn: [R6xkbA5h5Aa8opmbsLdjhz7cfW/jLUZK] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HE1EUR01HT211;5:nBaPboWcPM5oPhbsljaqopMLOZ8l4P8LtqwwjW0+gN1tvdeqtHWv9UKiKUtE8TDk+5qLCUmwu40SuzM9w1UXvSFKxjTNFY8qQM7lfcKuac+ZolIm9VBB4Uu6nBS1lv4VpkGPjdvh9qxX3EeuZXPyFg==;24:IHdgIojta9pUl1EglKmgxb1S7WPZdbovp7uQIWwEbFV67z/us702J3FffwTRA+P0uI0YMJmCPebiqOtZPbyPr8OhjNyClIIreGmZCoNqwfA=;7:aQ9yoATsOaFVMBreE98G0lcfOtgtuq2zSxS6HUcmgunUYpLThZB14/tIayicb75KlEnoRpFnc4O47JjYf3aeqimMD/DhT0LwrlmgCmTZn1pbb9KKHBa0GeKIEOrwsH1qA9a/iHK4j1p7YO543CoJ68lSPzOtsgaO0XfzG0iWdePHY4e6zCeDy/KDNbWAdS5JF/PDxAh+F7NKbQ4O4ZRhSWmPqDeRzJaH67PPqiZ1td+ZkuDAcocIMOkleY96Ggxj/dpuoSwo4Kcpy/DBCWqG3eM1Q9U4ziaUdIcoUWV7x+w7C+1s4cw6IwHs4SfXuMyr x-incomingheadercount: 42 x-eopattributedmessage: 0 x-forefront-antispam-report: EFV:NLI;SFV:NSPM;SFS:(7070007)(98901004);DIR:OUT;SFP:1901;SCL:1;SRVR:HE1EUR01HT211;H:DB6PR0801MB1736.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en; x-ms-office365-filtering-correlation-id: aee98434-28fe-42bf-3b1a-08d497bc7619 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322274)(1601125374)(1603101448)(1701031045);SRVR:HE1EUR01HT211; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(444000031);SRVR:HE1EUR01HT211;BCL:0;PCL:0;RULEID:;SRVR:HE1EUR01HT211; x-forefront-prvs: 03030B9493 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/alternative; boundary="_000_DB6PR0801MB1736E67F7FFD4B3053A033A2ADEC0DB6PR0801MB1736_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-originalarrivaltime: 10 May 2017 15:51:45.5622 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1EUR01HT211 Subject: my concept ( new PDO FETCH MODE ) From: Titus1006@msn.com (Csonka Titus) --_000_DB6PR0801MB1736E67F7FFD4B3053A033A2ADEC0DB6PR0801MB1736_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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 c= ases. However with the new php7.1 return type declaration(https://wiki.php.net/rf= c/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), retur= ning 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 =3D new PDO(dsn, user, pass, driver_options); $sql =3D "SELECT * FROM user WHERE name =3D {$pdo->quote($name)}"; $stmt =3D $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 =3D new PDO(dsn, user, pass, driver_options); $sql =3D "SELECT * FROM user WHERE name =3D {$pdo->quote($name)}"; $stmt =3D $pdo->query($sql); $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_NULL_IFNODATA,'UserClas= s'); return $stmt->fetch(); } Looking forward to you answer Best regards Miklos Csonka --_000_DB6PR0801MB1736E67F7FFD4B3053A033A2ADEC0DB6PR0801MB1736_--