Php 试图加载类“;COM“;来自命名空间-Symfony2

Php 试图加载类“;COM“;来自命名空间-Symfony2,php,class,symfony,ms-access,Php,Class,Symfony,Ms Access,我正在使用symfony2框架开发一个web。在此网站中,用户上载文件(.mdb)。网络读取文件,如果信息正确,则将其传递到数据库 问题是我试图使用“PHP的COM类”。首先,我想我也忘了放扩展名“extension=php\u com\u dotnet.dll”,但没有 可以使用此代码读取de mdb $count =0; $db_path = $path; $constr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ

我正在使用symfony2框架开发一个web。在此网站中,用户上载文件(.mdb)。网络读取文件,如果信息正确,则将其传递到数据库

问题是我试图使用“PHP的COM类”。首先,我想我也忘了放扩展名“extension=php\u com\u dotnet.dll”,但没有

可以使用此代码读取de mdb

    $count =0;
    $db_path = $path;
    $constr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . $db_path . ";";
    $odbc_con = new COM("ADODB.Connection");
    $odbc_con -> open($constr);
但西蒙尼告诉我

试图从C:\Symfony\WebD\src\PintxoNosti\MyTellBundle\Controller\pintxoxocontroller.php第62行中的命名空间“PintxoNosti\MyTellBundle\Controller”加载类“COM”。是否需要从另一个命名空间“使用”它

有人知道解决办法吗? 或者可能有一些想法来阅读symfony2中的mdb


谢谢。

在Symfony中,您使用名称空间。假设您想将COM的一个实例制作成一个控制器,比如说MyController。控制器PHP文件将以以下规则开头:

namespace AppBundle\Controller;
现在,如果您创建一个PHP COM类的实例,PHP将在AppBundle\Controller名称空间中搜索该类,在那里当然找不到它,因为它位于全局名称空间中

因此,您必须在COM之前添加\以指示可以在全局命名空间中找到此类:

$odbc_con = new \COM("ADODB.Connection");

使用
\Com
。使用名称空间时,没有任何类型的
use
语句的类名或未完全限定的类名被归类为与当前类位于同一名称空间中,因此在本例中
PintxoNosti\MyTellBundle\Controller
。如果在类前面加上“``前缀,则将其定位在全局命名空间中,而不是本地命名空间中。谢谢。:)很好用,很酷。。只是为了纠正“如果您在类前面加上“\”前缀,那么您是在全局名称空间而不是本地名称空间中定位它。”有人知道如何定义路径吗?这是我当前的问题来源:用于ODBC驱动程序的Microsoft OLE DB提供程序
说明:[Microsoft][Controlador ODBC Microsoft Access]'(desconocido)'no es una ruta de acceso v�lid和我使用$constr=“DRIVER={Microsoft Access DRIVER(*.mdb)};DBQ=“.”./../web/uploads/imgPintxos/”$db_路径。";";