php:对此代码段中使用“use”关键字的方式感到困惑

时间:2014-04-10 13:17:41

标签: php oop interface

found a question on SO以我不理解的方式使用了php“use”关键字。以下是代码段:

<?php
namespace My;

use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorAwareTrait;

class MyClass implements ServiceLocatorAwareInterface{
    use ServiceLocatorAwareTrait;


    public function doSomething(){
        $sl = $this->getServiceLocator();
        $logger = $sl->get( 'My\CusomLogger')
    }
}

// later somewhere else
$mine = $serviceManager->get( 'My\MyClass' );

//$mine now has the serviceManager with in.

现在我尝试了没有use ServiceLocatorAwareTrait;行的代码,但它不起作用。当您在页面顶部已经有use ServiceLocatorAwareTrait;时,为什么必须use Zend\ServiceManager\ServiceLocatorAwareTrait;。这是一种使用默认值或其他东西初始化接口所需方法的特殊方法吗?

1 个答案:

答案 0 :(得分:2)

类声明之外的'use'是导入其他名称空间 - classes / interfaces。

Class声明中的一个是将Trait导入Class,因此该类可以访问trait的行为。

名称空间 - http://php.net/manual/en/language.namespaces.php 特质 - http://php.net/manual/en/language.oop5.traits.php