[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * This file deals with RAII style scoped callbacks. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * http://www.gnu.org/copyleft/gpl.html 19 * 20 * @file 21 */ 22 23 /** 24 * Class for asserting that a callback happens when an dummy object leaves scope 25 * 26 * @since 1.21 27 */ 28 class ScopedCallback { 29 /** @var callable */ 30 protected $callback; 31 32 /** 33 * @param callable $callback 34 * @throws Exception 35 */ 36 public function __construct( $callback ) { 37 if ( !is_callable( $callback ) ) { 38 throw new InvalidArgumentException( "Provided callback is not valid." ); 39 } 40 $this->callback = $callback; 41 } 42 43 /** 44 * Trigger a scoped callback and destroy it. 45 * This is the same is just setting it to null. 46 * 47 * @param ScopedCallback $sc 48 */ 49 public static function consume( ScopedCallback &$sc = null ) { 50 $sc = null; 51 } 52 53 /** 54 * Destroy a scoped callback without triggering it 55 * 56 * @param ScopedCallback $sc 57 */ 58 public static function cancel( ScopedCallback &$sc = null ) { 59 if ( $sc ) { 60 $sc->callback = null; 61 } 62 $sc = null; 63 } 64 65 /** 66 * Trigger the callback when this leaves scope 67 */ 68 function __destruct() { 69 if ( $this->callback !== null ) { 70 call_user_func( $this->callback ); 71 } 72 } 73 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |