Php Yii2检查是否定义了包

Php Yii2检查是否定义了包,php,yii2,composer-php,Php,Yii2,Composer Php,在另一个Yii2应用程序中,我使用名为navatech/yii2roxymce的包将textarea替换为HTMl可编辑框。在当前的应用程序中,我不想使用它,而是想让一切都易于重用。换句话说,我想要一个条件检查,如果安装了包,调用它,如果不调用普通的活动表单textarea 我尝试了class\u存在,如下所示: <?php // _form.php code use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\helpers

在另一个Yii2应用程序中,我使用名为
navatech/yii2roxymce
的包将
textarea
替换为HTMl可编辑框。在当前的应用程序中,我不想使用它,而是想让一切都易于重用。换句话说,我想要一个条件检查,如果安装了包,调用它,如果不调用普通的活动表单textarea

我尝试了
class\u存在
,如下所示:

<?php
// _form.php code
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\helpers\Url;
use navatech\roxymce\widgets\RoxyMceWidget;
......
<?php if (class_exists('RoxyMceWidget')): ?>
  <?= RoxyMceWidget::widget([
    'model'       => $model, //your Model, REQUIRED
    'attribute'   => 'content', //attribute name of your model, REQUIRED if using 'model' section
    'name'        => 'Post[content]', //default name of textarea which will be auto generated, NOT REQUIRED if using 'model' section
    'value'       => isset($_POST['Post']['content']) ? $_POST['Post']['content'] : $model->content, //default value of current textarea, NOT REQUIRED
    'action'      => Url::to(['roxymce/default']), //default roxymce action route, NOT REQUIRED
    'options'     => [//TinyMce options, NOT REQUIRED, see https://www.tinymce.com/docs/
        'title' => 'RoxyMCE',//title of roxymce dialog, NOT REQUIRED
        'height' => 450,
    ],

]);?>
  <?php else: ?> 
  <?= $form->field($model, 'content')->textarea(['rows' => 14]);?>
  <?php endif; ?>
.....

.....
但是,在使用composer安装
navatech\roxymce\widgets\RoxyMceWidget
之后,条件语句会给出相同的结果。i、 e打印普通的activeform文本区域,因此
class_exists
在安装小部件时似乎总是返回false


是否有其他正确的方法来检查是否找到包?

必须为类提供完全限定的命名空间

class_exists('navatech\roxymce\widgets\RoxyMceWidget')

对于prs4,必须包含命名空间:

class\u存在('navatech\roxymce\widgets\RoxyMceWidget')

或:

class\u存在(RoxyMceWidget::className())
如果它已在use语句中定义



更新:您应该使用最新版本的
yii2-roxymce
,当前版本为
2.0.0.1

class\u存在
不知道这一点。
className
的第二个解决方案不是完整的解决方案。假设
中定义的类使用了
,但未安装。在这种情况下,将生成一条错误消息。您是对的。因此,
class_存在('navatech\roxymce\widgets\RoxyMceWidget')
是唯一的解决方案