在多个班级中有一个特质

时间:2014-03-24 04:02:06

标签: php codeigniter traits

也许我没有得到整个特质系统,所以我想我会问StackOverFlow。

我的第一个特质......

<?php
trait MY_Stat
{   
  var $dex;
  var $int;
  var $str;
}
?>

我无法让它与我的班级一起工作(在另一个文件中)....

class MY_Mobile
{
  use MY_Stat;

  public function __construct($params = NULL)
  {     
    var_dump($this);
  }
}

我总是碰到这堵墙:

Fatal error: Trait 'MY_Trait' not found in ...\wamp\www\game\application\libraries\MY_Mobile.php

我想在很多课程中都有这个特性,即手机,物品等......我是否应该在同一个文件中定义特征?

在旁注中,如果你正在使用codeigniter,你是如何设法加载的,你是否将你的特征设置为辅助文件,库文件......?

2 个答案:

答案 0 :(得分:1)

你可以通过这样做来解决这个问题:

<强>路径:

  

应用/助手/你的性状-class.php

<强>内容:

<?php
if (!trait_exists('MY_Stat')) {
    trait MY_Stat
    {
        public $dex;
        public $int;
        public $str;
    }
}

在你的图书馆中,只需手动包含特质类(如我所说)。在!defined('BASEPATH');行之后。

您的图书馆:

include APPPATH . 'helpers/your-trait-class.php';

class YourLibrary {
    use MY_Stat;

并在库方法中使用特征类属性,如下所示:

$this->dex = 0.1;
$this->int = 1;
$this->str = 'Hello';

答案 1 :(得分:0)

另一种适合我的选择..其中model_base在模型文件夹中

@include_once ('model_base.php');  
class device_token extends CI_Model {

        // PHP 5.4 Traits
        use model_base;