Fuck PHP And Laravel interview
No Data
Laraveler、PHPer面试指南
其实就是最近找工作发现的一些你可能经常用,但是理论说不清楚的问题,这里做的收集整理
strrpos() strripos() stripos() strpos() 之间的区别
arraymap 和 arraywalk 的区别?
ucfirst lcfirst ucwords strtoupper strtolower 的区别
HTTP状态码有哪些? 区别?
PHP7和PHP5的区别,具体多了哪些新特性?
$name = $name ?? "NoName"; // 如果$name有值就取其值,否则设$name成"NoName"
$name = ["Simen", "Suzy", "Cook", "Stella"]; usort($name, function ($left, $right) { return $left <=> $right; }); print_r($name);
define("USER", [ "name" => "Simen", "sex" => "Male", "age" => "38", "skill" => ["PHP", "MySQL", "C"] ]); // USER["skill"][2] = "C/C++"; // PHP Fatal error: Cannot use temporary expression in write context in...
$foo = "goo";
$$foo["bar"]["baz"]; // 实际为:($$foo)['bar']['baz']; PHP 5 中为:${$foo['bar']['baz']}; // PHP 7 中一个笼统的判定规则是,由左向右结合。
* Throwable 接口 这是 PHP 7 引进的一个值得期待的新特性,将极大增强 PHP 错误处理能力。PHP 5 的 try ... catch ... finally 无法处理传统错误,如果需要,你通常会考虑用 set_error_handler() 来 Hack 一下。但是仍有很多错误类型是 set_error_handler() 捕捉不到的。PHP 7引入 Throwable 接口,错误及异常都实现了 Throwable,无法直接实现 Throwable,但可以扩展 \Exception 和 \Error 类。可以用 Throwable 捕捉异常跟错误。\Exception 是所有PHP及用户异常的基类;\Error 是所有内部PHP错误的基类。$name = "Tony"; try { $name = $name->method(); } catch (\Error $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; }
try { $name = $name->method(); } catch (\Throwable $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; }try { intdiv(5, 0); } catch (\DivisionByZeroError $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; }
</pre> <ul> <li>use 组合声明 use 组合声明可以减少 use 的输入冗余。 <pre> use PHPGoodTaste\Utils\{ Util, Form, Form\Validation, Form\Binding }; </pre> <br> </li> <li>一次捕捉多种类型的异常 / 错误 PHP 7.1 新添加了捕获多种异常/错误类型的语法——通过竖杠“|”来实现。 <pre> try { throw new LengthException("LengthException"); // throw new DivisionByZeroError("DivisionByZeroError"); // throw new Exception("Exception"); } catch (\DivisionByZeroError | \LengthException $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; } catch (\Exception $e) { echo "出错消息 --- ", $e->getMessage(), PHP_EOL; } finally { // ... } </pre> </li> <li> <p>可见性修饰符的变化 PHP 7.1 之前的类常量是不允许添加可见性修饰符的,此时类常量可见性相当于 public。PHP 7.1 为类常量添加了可见性修饰符支持特性。总的来说,可见性修饰符使用范围如下所示: </p> <ul> <li>函数/方法:public、private、protected、abstract、final</li> <li>类:abstract、final</li> <li>属性/变量:public、private、protected</li> <li> <p>类常量:public、private、protected
class YourClass { const THEOLDSTYLE_CONST = "One";
public const THEPUBLICCONST = "Two"; private const THEPRIVATECONST = "Three"; protected const THEPROTECTEDCONST = "Four"; } ```
iterable 伪类型 PHP 7.1 引入了 iterable 伪类型。iterable 类型适用于数组、生成器以及实现了 Traversable 的对象,它是 PHP 中保留类名。 ``` $fn = function (iterable $it) : iterable { $result = []; foreach ($it as $value) { $result[] = $value + 1000; } return $result; };
$fn([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); ```
可空类型(Nullable Type) PHP 7.1 引入了可空类型。看看新兴的 Kotlin 编程语言的一个噱头特性就是可空类型。PHP 越来越像“强类型语言了”。对于同一类型的强制要求,可以设置其是否可空。 ``` $fn = function (?int $in) { return $in ?? "NULL"; };
$fn(null); $fn(5); $fn(); // TypeError: Too few arguments to function {closure}(), 0 passed in ... ```
Void 返回类型 ``` function first(): void { // ... }
function second(): void { // ... return; } ```
性能提升了两倍
结合比较运算符 (<=>)
标量类型声明
返回类型声明
为什么PHP7比PHP5性能提升了?
你知道哪些PHP自带的数组排序方法?
IoC容器是什么?
其作用简单来讲就是利用依赖关系注入的方式,把复杂的应用程序分解为互相合作的对象,从而降低解决问题的复杂度,实现应用程序代码的低耦合、高扩展。
Laravel 中的服务容器是用于管理类的依赖和执行依赖注入的工具。 参考地址
依赖注入的原理?
Facade是什么?
了解过Composer?实现原理是什么?
了解哪些设计模式?
##### 创建性模式
单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、对象池模式、 原型模式
适配器模式、桥接模式、组合模式、装饰器模式、依赖注入、门面模式、链式操作、代理模式
行为性模式、观察者模式、责任链模式、模板方法、策略模式、访问者模式、遍历模式、空对象模式、状态模式、命令模式
参考资料 熟记SOLID原则
什么是索引,作用是什么?常见索引类型有那些?Mysql 建立索引的原则?
MySQL日志格式以及优缺点?
overtrue 赵金超 以及所有Laravel-China的小伙伴