如何通过autoload.php使用Composer安装的类?

时间:2018-07-31 12:12:46

标签: php composer-php

您可能会发现这个问题有点奇怪,但是我读了几篇文章,但我仍然不清楚如何使它起作用。我有一台安装了作曲器的服务器,我通过请求命令使其请求DomCrawler,它成功安装了它,我有vendor \ symfony目录和文件autoload.php,我将其包含在脚本中。它返回Composer \ Autoload \ ClassLoader的对象,该对象似乎具有类

[prefixLengthsPsr4:Composer\Autoload\ClassLoader:private] => Array
    (
        [S] => Array
            (
                [Symfony\Polyfill\Mbstring\] => 26
                [Symfony\Polyfill\Ctype\] => 23
                [Symfony\Component\DomCrawler\] => 29
            )

    )

现在如何使用它们?在手册中,它们通常是在那时注册的,在我的情况下,人们可以简单地制作诸如$var = new Symfony\Component\DomCrawler();之类的变量,似乎需要一些额外的命令才能包含要编码的类,而对于我来说我还不清楚必须采用?或者如何将这些类包含到我的代码中并与之一起使用...

$loader = require '../../composer/vendor/autoload.php';

$classes = get_declared_classes();

if( class_exists( 'Composer\Autoload\ClassLoader' ) ){
    $methods = get_class_methods( 'Composer\Autoload\ClassLoader' );
}

echo '<pre>';
//print_r($loader);
print_r( $classes );
//print_r( $methods );
echo '</pre>';

die();

我没有看到爬虫/交响乐课。仅composer类被添加到php带来的类中。

1 个答案:

答案 0 :(得分:0)

当您请求类时,它们将被加载-这就是自动加载的重点。如果您的项目中包含数千个类,并且特定请求仅使用其中的100个类,则只会加载这100个类。通过跳过加载所有未使用的类,它可以节省服务器资源。

在调用get_declared_classes()之前尝试使用类-它应该在那里。

$loader = require '../../composer/vendor/autoload.php';

$crawler = new \Symfony\Component\DomCrawler\Crawler();

$classes = get_declared_classes();

echo '<pre>';
print_r( $classes );
echo '</pre>';

die();