PHP 标准库

SPL

class_implements

<?php

interface Foo
{
    //
}

class Bar implements Foo
{
    //
}

var_dump(class_implements('Foo'));   // array(0) { }
var_dump(class_implements('Bar'));   // array(1) { ["Foo"]=> string(3) "Foo" }
var_dump(class_implements(new Bar)); // array(1) { ["Foo"]=> string(3) "Foo" }

class_parents

<?php

class Foo
{
    //
}

class Bar extends Foo
{
    //
}

var_dump(class_parents('Foo'));   // array(0) { }
var_dump(class_parents('Bar'));   // array(1) { ["Foo"]=> string(3) "Foo" }
var_dump(class_parents(new Bar)); // array(1) { ["Foo"]=> string(3) "Foo" }

class_uses

<?php

trait Foo
{
    //
}

class Bar
{
    use Foo;
}

var_dump(class_uses('Foo'));   // array(0) { }
var_dump(class_uses('Bar'));   // array(1) { ["Foo"]=> string(3) "Foo" }
var_dump(class_uses(new Bar)); // array(1) { ["Foo"]=> string(3) "Foo" }

iterator_apply

<?php

/**
 * Just a test function.
 *
 * @param  Iterator $iterator
 * @return bool
 */
function foo(Iterator $iterator): bool
{
    var_dump($iterator->current());
    return true;
}

$iterator = new ArrayIterator([2, 3, 5]);
iterator_apply($iterator, 'foo', [$iterator]);
// int(2)
// int(3)
// int(5)

iterator_count

<?php

$iterator = new ArrayIterator();
var_dump(iterator_count($iterator)); // int(0)

$iterator = new ArrayIterator([2, 3, 5, 'foo', 'bar']);
var_dump(iterator_count($iterator)); // int(5)

iterator_to_array

<?php

$iterator = new ArrayIterator(['foo' => 'foo', 'bar' => 'bar']);
var_dump(iterator_to_array($iterator));        // array(2) { ["foo"]=> string(3) "foo" ["bar"]=> string(3) "bar" }
var_dump(iterator_to_array($iterator, false)); // array(2) { [0]=> string(3) "foo" [1]=> string(3) "bar" }

spl_autoload_call

<?php

spl_autoload_call('Foo');
var_dump(new Foo); // object(Foo)#1 (0) { }

spl_autoload_call('Bar');
var_dump(new Bar); // object(Bar)#1 (0) { }

上例中的 Foo.php 文件内容:

<?php

class Foo
{
    //
}

上例中的 Bar.php 文件内容:

<?php

class Bar
{
    //
}

spl_autoload_extensions

<?php

var_dump(spl_autoload_extensions());            // string(9) ".inc,.php"
var_dump(spl_autoload_extensions('.inc,.php')); // string(9) ".inc,.php"

spl_autoload_functions

<?php

var_dump(spl_autoload_functions());

spl_autoload_register

<?php

/**
 * Include the specified file.
 *
 * @param  string $class
 * @return void
 */
function foo(string $class)
{
    include $class . '.php';
}

$foo = spl_autoload_register('foo');
$bar = spl_autoload_register(function (string $class) {
    include $class . '.php';
});
var_dump(new Foo); // object(Foo)#2 (0) { }
var_dump(new Bar); // object(Bar)#2 (0) { }

上例中的 Foo.php 文件内容:

<?php

class Foo
{
    //
}

上例中的 Bar.php 文件内容:

<?php

class Bar
{
    //
}

spl_autoload_unregister

<?php

/**
 * Include the specified file.
 *
 * @param  string $class
 * @return void
 */
function foo(string $class)
{
    include $class . '.php';
}

$foo = spl_autoload_register('foo');
$bar = spl_autoload_register(function (string $class) {
    include $class . '.php';
});

$functions = spl_autoload_functions();
foreach ($functions as $function) {
    var_dump(spl_autoload_unregister($function));
}
// bool(true)
// bool(true)

spl_autoload

<?php

spl_autoload_register();
var_dump(new Foo); // object(Foo)#1 (0) { }
var_dump(new Bar); // object(Bar)#1 (0) { }

上例中的 Foo.php 文件内容:

<?php

class Foo
{
    //
}

上例中的 Bar.php 文件内容:

<?php

class Bar
{
    //
}

spl_classes

<?php

var_dump(spl_classes());

spl_object_hash

<?php

class Foo
{
    //
}

var_dump(spl_object_hash(new Foo));

spl_object_id

<?php

class Foo
{
    //
}

var_dump(spl_object_id(new Foo));

results matching ""

    No results matching ""