TP5和TP6异同之处
<h2>目录结构异同</h2>
<ul>
<li>application -> app</li>
<li>框架目录存放
<ul>
<li>/thinkphp/ -> /vendor/topthink/</li>
</ul></li>
</ul>
<h2>安装方式</h2>
<ul>
<li>TP5通过composer和git两种方式</li>
<li>TP6只能通过composer进行安装</li>
</ul>
<h2>类自动加载方式</h2>
<ul>
<li>TP6 composer</li>
<li>TP5 composer + 自己实现了一套</li>
</ul>
<h2>严格模式</h2>
<ul>
<li>例如:</li>
<li>/vendor/topthink/framework/src/think\App.php</li>
<li>declare (strict_types = 1);</li>
<li>方法声明返回类型</li>
</ul>
<h2>TP6支持更多的PSR规范</h2>
<ul>
<li>PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准</li>
<li>详细介绍网址
<ul>
<li><a href="https://learnku.com/docs/psr">https://learnku.com/docs/psr</a></li>
</ul></li>
</ul>
<h2>组件独立</h2>
<ul>
<li>orm</li>
<li>模板引擎</li>
</ul>
<h2>中间件改进</h2>
<ul>
<li>TP6开始使用了管道模式来实现中间件,比起之前版本的实现更加简洁、有序</li>
</ul>
<h2>引入Filesystem组件</h2>
<h2>php7为了提高执行效率</h2>
<ul>
<li>在函数方法中增加了标量类型(布尔、浮点、整型、字符)的申明特性,节省了对数据类型的检测。</li>
<li>php7 仍然支持弱类型检测,即仍然可以使用原来的方式声明形参。</li>
<li>标量声明有两种特性:</li>
<li>强制模式(默认)
<ul>
<li>体现在类型转换上</li>
</ul></li>
<li>严格模式
<ul>
<li>模式声明:declare(strict_types=1);</li>
<li>默认情况值为0,值为1代表为严格校验的模式</li>
<li>可以使用的类型参数:int-float-bool-string-interfaces-array-callable</li>
<li>作用于形参与返回值类型说明,可选</li>
</ul></li>
</ul>
<pre><code class="language-php">// php7之前申明方式
function type_weak(... $int) {
return array_sum($int);
}
// 强制模式 php7声明方式
//强制模式下会将所有实参转换为整型
function sum(int ... $ints) {
//array_sum() 将数组中的所有值的和以整数或浮点数的结果返回。
print_r($ints);
echo "<br>";
return array_sum($ints);
}
echo type_weak(2, '3',0.11);
echo "<hr>";
echo sum(2, '3',0.11);</code></pre>
<h2>将模式申明为严格模式</h2>
<pre><code class="language-php">//declare 必须在文件首部
declare(strict_types=1);
// 强制模式(默认)
function type_weak(... $int){
return array_sum($int);
}
// 强制模式
function sum(int ... $ints)
{
//array_sum() 将数组中的所有值的和以整数或浮点数的结果返回。
print_r($ints);
echo "<br>";
return array_sum($ints);
}
echo type_weak(2, '3',0.11);
echo "<hr>";
//实参存在字符串与浮点型,报错
echo sum(2, '3',0.11);</code></pre>
<h2>返回值</h2>
<pre><code class="language-php">declare(strict_types=0);
// 强制模式(默认)
function type_weak(... $int) :int {
return array_sum($int);
}
// 强制模式
function sum(int ... $ints) :int {
//array_sum() 将数组中的所有值的和以整数或浮点数的结果返回。
print_r($ints);
echo "<br>";
//严格模式下报错
return array_sum($ints)+0.6;
}
echo type_weak(2, '3',0.11);
echo "<hr>";
echo sum(2, '3',0.11);</code></pre>