PDA

Visualizza la versione completa : instanceof non funziona


zacca94
21-04-2016, 15:23
index.php


<?php
/**
* Set exception handler
*/
set_exception_handler(array('system\bootstrap\Blin d', 'exceptionHandler'));

/**
* Set php error handler
*/
set_error_handler(array('system\bootstrap\Blind', 'errorHandler'), E_ALL);

// [...]

public static final function exceptionHandler(\Exception $e) {
// var_dump($e);
if ($e instanceof IException) {
$e->show();
}
}

public static final function errorHandler($errorNo, $message, $filename, $lineNo) {
throw new BlindException($errorNo, $message, $filename, $lineNo);
}


includes/Error/BaseErrorHandler.php

<?php
namespace Error;

class BaseErrorHandler extends \Exception {
// [...]
}

includes/Error/BlindException.php

<?php
namespace Error;

class BlindException extends BaseErrorHandler implements IException {
public function show() {
die("show");
}
}

includes/Error/IException.php

<?php
namespace error;

interface IException {
public function show();
}

Perchè l'if ($e instanceof IException) ​non viene eseguito?

zacca94
22-04-2016, 11:58
up

k.b
22-04-2016, 15:56
Non hai specificato il namespace dell'interfaccia: nella index.php o fai


use Error\IException;


oppure specifichi il nome completo:


if ($e instanceof \Error\IException) {

zacca94
22-04-2016, 22:21
grazie gentilissimo

Loading