Php 如何通过composer自动加载加载特性
我已尝试将我的traits文件夹添加到composer自定义自动加载,但这不起作用并返回错误。那么这可能是通过composer自动加载的吗?非常感谢你的回答 我的特点:Php 如何通过composer自动加载加载特性,php,composer-php,autoload,traits,Php,Composer Php,Autoload,Traits,我已尝试将我的traits文件夹添加到composer自定义自动加载,但这不起作用并返回错误。那么这可能是通过composer自动加载的吗?非常感谢你的回答 我的特点: trait User { public function is_email_unique($email) { return $this->User->get_one_by_email($email) ? FALSE : TRUE; } public function is_usernam
trait User
{
public function is_email_unique($email)
{
return $this->User->get_one_by_email($email) ? FALSE : TRUE;
}
public function is_username_unique($username)
{
return $this->User->get_one_by_username($username) ? FALSE : TRUE;
}
}
我的班级:
class Auth extends MY_Controller
{
// Implement trait in class
use User;
public function __contstruct()
{
parent::__contstruct();
}
public function register()
{
if ($this->input->is_post()) {
// load validation library
$this->load->library('form_validation');
//set validation rules
$this->form_validation->set_rules('username', "Username", 'required|callback_username_check');
// There I use my trait method callback_is_email_unique
$this->form_validation->set_rules('email', "Email", 'required|valid_email|callback_is_email_unique');
$this->form_validation->set_rules('password', "Password", 'required|matches[confirm_password]|min_length[6]');
$this->form_validation->set_rules('confirm_password', "Confirm password", 'required');
...
}
}
我的作曲家文件:
{
"autoload": {
"psr-0": {
"User": "Validation"
}
}
}
我现在用PHP5.5.3来回测试了一段时间,虽然我不得不报告在测试过程中出现了问题(更有可能是因为我在短时间内生成了一个版本为该版本的虚拟机,没有设置和wronk键盘布局),但最终我无法重现错误。我认为traits的自动加载就像广告宣传的那样有效 下面是我所做的: 在主目录中:
composer.json
{
"autoload": {"psr-0":{"User":"src"}}
}
此外:
运行composer install
创建vendor/composer/autoload_namespace.php
,使用以下数组项:
'User' => array($baseDir . '/src'),
执行testscript对我来说很有用
请注意,正确命名文件非常重要。它们必须根据PSR-0规则(或者PSR-4,如果您更喜欢使用名称空间)进行精确匹配,包括区分大小写的正确文件名
如果您有一个名为“User”的特性,并且您将PSR-0自动加载定义为“User”:“Validation”,那么预期的情况是存在以下文件:Validation/User.php
,其中包含以下内容:
<?php
trait User {
// stuff here
}
你能发布一些你正在使用的代码吗?发布一个不起作用的小例子,准确地说出你所看到的表明它不起作用的东西。trait与类的加载方式相同。您可以生成一个类映射,或者使用PSR样式。这并不能像您定义的那样解决。PSR-0
选项接受“NS Prefix”:“Path”
假设您的源目录是Validation
要加载trait\User
您需要:“Validation”
Hmmz,但是如果我尝试使用相同的配置请求类,这可以正常工作,但不能使用trait?因此Steve Buzonas您的假设是不正确的,因为如果我将trait关键字更改为class并请求该类系统正常工作。感谢您提供有关编写器和自动加载trait的详细说明。这是一个来自谷歌搜索结果的问题,我相信这与我遇到的问题有关,所以我悬赏了。事实证明,我的web服务的php.ini允许使用短标记,而我的CLI php.ini则不允许,所以有一个
'User' => array($baseDir . '/src'),
<?php
trait User {
// stuff here
}