RAISE_ABSTRACT_ERROR

PHP code

<?php
/*
 * 
 * opcode number: 142
 */

abstract class fail {
    abstract function 
show();
}

class 
pass extends fail {
    function 
show() {
        echo 
"Call to function show()\n";
    }
}

$t2 = new pass();
$t2->show();

$t = new fail();
$t->show();

echo 
"Done\n"// shouldn't be displayed
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$t2, !1=$t

line # op fetch ext return operands
7 0 NOP        
11 1 NOP        
  2 NOP        
17 3 ZEND_FETCH_CLASS     :3 'pass'
  4 NEW     $4 :3
  5 DO_FCALL_BY_NAME   0    
  6 ASSIGN       !0,$4
18 7 ZEND_INIT_METHOD_CALL       !0,'show'
  8 DO_FCALL_BY_NAME   0    
20 9 ZEND_FETCH_CLASS     :9 'fail'
  10 NEW     $10 :9
  11 DO_FCALL_BY_NAME   0    
  12 ASSIGN       !1,$10
21 13 ZEND_INIT_METHOD_CALL       !1,'show'
  14 DO_FCALL_BY_NAME   0    
23 15 ECHO       'Done%0A'
24 16 RETURN       1

Function name: show

Compiled variables: none

line # op fetch ext return operands
8 0 ZEND_RAISE_ABSTRACT_ERROR        
  1 RETURN       null

Function name: show

Compiled variables: none

line # op fetch ext return operands
13 0 ECHO       'Call+to+function+show%28%29%0A'
14 1 RETURN       null
关注编程学问公众号