怎么新建MySQL数据库

发布时间:2022-08-15 作者:admin
阅读:476
今天这篇我们来学习和了解“PHP中使用中traits方式能做什么,有什么简单实例”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“PHP中使用中traits方式能做什么,有什么简单实例”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!


traits学习

越来越多的框架和代码开始使用traits方式去组织一些功能,这是非常高效的代码组织结构。

通过trait来减少不必要的类继承关系,让代码更加复用,形成可以拔插的代码集合。

通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。

单个的例子:

<?php

trait Seller
{
	public function sell()
	{
	   print_r("sell all goods");		
	}	
}

class MySeller
{
	use Seller;	
}


$seller = new MySeller();
$seller->sell();

多个trait的例子:

<?php
trait Money
{
	public function show()
	{
		echo "200$";
	}
}

trait Factory
{
	public function run()
	{
		print_r("running all");
	}
}

class User
{
	use Money, Factory;
	
	public function show()
	{
		echo "I am an user";
	}
} 

$user = new User();
$user->show(); // => I am an user

当引入trait的类也有同名方法或者函数,那么当前类的该方法会覆盖trait中的同名方法。

如上面这个例子中User类和Money trait都有show方法,则执行之后调用的是User类的show方法,打印出"I am an user"的内容。

但是如果两个 trait 都插入了一个同名的方法,如果没有明确解决冲突将会产生一个致命错误。我们需要明确指定是否某个trait的方法或者尽量不要让不同trait里面存在同名方法。

1.使用 insteadof 操作符来明确指定使用冲突方法中的哪一个。例如:

<?php
trait Token
{
	public function toString($var)
	{
		return (string)$var . "_token";
	}
	
	public function tips()
	{
		print_r("Token tips!");
	}
}

trait Tester
{
	public function toString($var)
	{
		return (string)$var . "_test";
	}
	
	public function tips()
	{
		print_r("Tester tips");
	}
}

class Controller
{	
	use Token, Tester {
		Token::toString insteadof Tester;
		Tester::tips insteadof Token;
	}
}

$con = new Controller();
$con->toString('hello');
$con->tips('my god!');

或者使用别名方式去避免同名问题,如:

class Controller
{
	user Token, Tester {
		Token::toString as toTokenString;
		Tester::tips as testerTips;
	}
}

以上都是一些理论案例,实际上一些优质和现代的php框架已经在使用trait方式组织整个代码。典型的就是laravel。比如/www/larblog/app/Http/Controllers/Controller.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesResources;

class Controller extends BaseController
{
    use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;
}

这里就使用了四个trait.


“PHP中使用中traits方式能做什么,有什么简单实例”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业技术相关的知识可以关注群英网络网站,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

二维码-群英

长按识别二维码并关注微信

更方便到期提醒、手机管理

7*24 全天候服务

售前 400-678-4567

售后 0668-2555666

售后 400 678 4567

信息安全 0668-2555 118

域名空间 3004329145