本文来源:https://juejin.im/post/5adbf3de518825670f7b6ed0#heading-2 ,并在此基础上,加入了我个人的一些 idea 。
文章的目录架构大致如下:
PHP
基础
1、session 和 cookie 的区别
-
Session 是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在服务器内存、缓存、数据库中
-
Cookie 是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session 的一种方式。
为什么需要 session ?因为 http 是无状态的,所以需要 session 来记录用户的状态
2、PHP7 用了吗,了解哪些新特性
- PHP7 的性能更高
??
操作符<=>
组合比较运算符- define 定义常量数组
:
声明返回值类型- 匿名类,支持用 new class 来实例化一个匿名类
- 闭包多了一个 call 方法
参考:php7 新特性
3、魔术常量
__LINE__
:文件中的当前行号__FILE__
:文件的完整路径和文件名__DIR__
:文件所在的目录__FUNCTION__
: 函数名称__CLASS__
:类的名称__TRAIT__
:Trait 的名称__METHOD__
:类的方法名__NAMESPACE__
:当前命名空间的名称
4、魔术方法
__construct()
__destruct()
__call()
__callStatic()
__get()
__set()
__isset()
__unset()
__sleep()
__wakeup()
__toString()
__invoke() // 当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。
__set_state()
__clone()
__debugInfo()
数据结构和算法
1、栈数据结构
<?php
class Stack {
private $top = -1;
private $stack = array(); // 利用数组存储数据
// 入栈
public function push($ele){
$this->stack[++$this->top] = $ele; // 此处必须是++i,先计算再使用
}
// 出栈,返回出栈元素
public function pop(){
if ($this->top == -1){
echo 'stack is empty...';
return false;
}
$ele = $this->stack[$this->top];
unset($this->stack[$this->top--]); // 此处必须是i--,先使用再计算(注意出栈和入栈的区别)
return $ele;
}
// 遍历栈
public function show(){
if ($this->top == -1){
echo 'stack is empty...';
return false;
}
for($i=$this->top; $i>-1; $i--){
echo $this->stack[$i].'<br/>';
}
}
}
参考:PHP实现栈数据结构