Skip to content

Latest commit

 

History

History
52 lines (42 loc) · 2.09 KB

raw.md

File metadata and controls

52 lines (42 loc) · 2.09 KB

PHP Type Hinting Mixed https://wiki.php.net/rfc/mixed-typehint



                /*
                 * Pada bagian ini di cek, apalah $handler itu callable atau callback atau tidak.
                 * Jika tidak, maka dilakukan explode dengan delimeter /
                 * untuk mendapatkan informasi class dan method, lalu menjalankan.
                 *
                 * Dokumentasi selengkapnya: https://www.php.net/manual/en/language.types.callable.php
                 * */
//                if (is_callable($handler, true)) {
//                    call_user_func($handler, $vars);
//                } else {
//                    list($class, $method) = explode("/", $handler, 2);
//                    call_user_func_array(array(new $class, $method), $vars);
//                }

                if (is_callable($handler, true)) {
                    $response = call_user_func($handler, $vars);
                } else {
                    list($class, $method) = explode("/", $handler, 2);
                    $response = call_user_func_array(array(new $class, $method), $vars);
                }


//                if ($response instanceof \Nyholm\Psr7\Response) {
                if ($response instanceof Response) {
                    if ($response->hasHeader('location')) {
                        $result = $response->getHeader('location');
                        header("Location: ". (string) $result[0], true, 301);
                        die();
                    }


                    (new \Zend\HttpHandlerRunner\Emitter\SapiEmitter())->emit($response);
//                    $emitter = new SapiEmitter();
//                    $emitter->emit($response);
                } else {
                    if (is_callable($handler, true)) {
                        // enggak usah di pakai, kan udah di panggil diatas
//                        call_user_func($handler, $vars);
                    } else {
                        list($class, $method) = explode("/", $handler, 2);
                        call_user_func_array(array(new $class, $method), $vars);
                    }
                }