因为php默认的输入流就是请求 默认的输出流就是响应 当我们需要再控制台打印数据该如何办呢?
$fp = fopen("php://stdout", 'a');
fputs($fp, "hello\n");
有几个php://的流位php辅助的流
上图为控制台输出
php://stderr位控制台异常流
php://stdin为控制台输入流
因为php默认的输入流就是请求 默认的输出流就是响应 当我们需要再控制台打印数据该如何办呢?
$fp = fopen("php://stdout", 'a');
fputs($fp, "hello\n");
有几个php://的流位php辅助的流
上图为控制台输出
php://stderr位控制台异常流
php://stdin为控制台输入流
https://laravel-admin.org laravel-admin 文档
类似于ruby on rails (grails) laravel-admin 具有大量代码生成命令,(本身就是laravel的特性)代码区分 model controller view
然而view是由具体php类(继承自renderable)来定义的 高内聚 却 提高了门槛
这个是laravel-admin最大的特点舍弃了编辑html的机会(不用blade模板),用纯php代码书写视图(放弃了灵活性,但提高了效率,类似于extjs 用js把html封装成component对象 其渲染的核心方法也是render 接口是)
创建控制器 UserController 微控制器名称 –model指定数据库对象
php artisan admin:make UserController --model=App\User
初始化laravel-admin 会执行数据库初始化 并且 把laravel-admin的初始化文件 复制到 laravel下面
php artisan admin:install
自动生成 数据库表对象
php artisan make:model XXX
view组件:
Grid 的使用
$grid = new Grid(new Appointment());
$grid->model()->where('status', 1)->orderBy('created_at','desc');
该命令是laravel下的项目命令
其实是用php执行项目下的artisan文件(php文件)
该文件会接受参数(通过$argv获取,$argc显示参数个数)
PHP变量以$
字符串模板 : $temp = “Hello , {$var1} !”;
if语法:(注:是 elseif 不是else if)
if(true){
}elseif(false){
}else{
}
while语法:
while(true){
}
数组语法:
array(key=>value,key=>value)
[key=>value,key=>value] //映射类数组
[value1,value2] //顺序类数组
count($array) //返回数组长度
数组迭代:
foreach($array as $key => $value){
}
foreach ($array as $value){
}
函数:
function($variable){
return $value
}
模块: 通过require引入某个文件 通过use 引入命名空间
require “another.php”
use “/Robin/luo/Another”
类:
class Another {
public $property
public function __construct($property){
this->property = $property;
}
public function func($param){
return $value;
}
public static function func1(){
}
}
$object = new Another();
$object1 = new Another(1);
$object->property = 1;
$object->func(1);
Another::func1();
命名空间:通过namespace 定义 用\进行解析不是java的.
namespace Robin;
\Robin\luo::reading();
php原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”。
php依赖php运行容器即php进程,通过该进程对php文件进行输入处理,在 标准输出流 返回输出结果。特点运行简单,无需编译。在web容器下,每个请求都会产生一个php进程,所以只需把php文件更改后,立即访问该php文件,即可看见最新的更改(每发送一个请求,产生了新的进程重新读取文件)。调试十分方便。
运行php环境有多种方法
1:通过php命令
php -f “xxx.php” 通过指定需要加载php文件,开启php进程,在控制台标准输出流看到该文件的输出。
php -s localhost:8080 (-t “项目文件夹”) 通过-t 指定php文件的文件夹,默认为当前进程执行文件夹目录。浏览器访问localhost:8080通过文件系统路径访问对应的文件(默认为index.php),即可在浏览器看到对应文件的输出。这个就是把php进程的输出流打在web容器的请求输出上,所以能在浏览器看到输出
2:通过web容器访问。其实就是通过web容器执行请求输入到socket中(文件socket或端口socket都可)。服务器开启php-fpm服务,监听对应的socket作为进程输入,将php-fpm的标准输出流打在socket上供web容器读取。web容器再把socket的读取的内容作为请求响应返回给用户。(这就是标准的cgi做法,以进程标准输入流接受请求,标准输出流产生响应,一个请求就是一个进程)。
nginx配置:
| location ~ .php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
apache配置:
| LoadModule php7_module “${INSTALL_DIR}/bin/php/php7.1.9/php7apache2_4.dll” <IfModule php7_module> DirectoryIndex index.php index.php3 AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 </IfModule> |