• PHP-T


    TP5目录结构

    ├─application 应用目录
    ├─extend 扩展类库目录(可定义)
    ├─public 网站对外访问目录
    ├─runtime 运行时目录(可定义)
    ├─vendor 第三方类库目录(Composer)
    ├─thinkphp 框架核心目录
    ├─build.php 自动生成定义文件(参考)
    ├─composer.json Composer定义文件
    ├─LICENSE.txt 授权说明文件
    ├─README.md README 文件
    ├─think 命令行工具入口
     
    核心框架目录结构
    ├─thinkphp 框架系统目录
    │ ├─lang 语言包目录
    │ ├─library 框架核心类库目录
    │ │ ├─think think 类库包目录
    │ │ └─traits 系统 traits 目录
    │ ├─tpl 系统模板目录
    │ │
    │ ├─.htaccess 用于 apache 的重写
    │ ├─.travis.yml CI 定义文件
    │ ├─base.php 框架基础文件
    │ ├─composer.json composer 定义文件
    │ ├─console.php 控制台入口文件
    │ ├─convention.php 惯例配置文件
    │ ├─helper.php 助手函数文件(可选)
    │ ├─LICENSE.txt 授权说明文件
    │ ├─phpunit.xml 单元测试配置文件
    │ ├─README.md README 文件
    │ └─start.php 框架引导文件

    应用目录结构

    ├─application 应用目录(可设置)
    │ ├─index 模块目录(可更改)
    │ │ ├─config.php 模块配置文件
    │ │ ├─common.php 模块公共文件
    │ │ ├─controller 控制器目录
    │ │ ├─model 模型目录
    │ │ └─view 视图目录
    │ │
    │ ├─command.php 命令行工具配置文件
    │ ├─common.php 应用公共文件
    │ ├─config.php 应用配置文件
    │ ├─tags.php 应用行为扩展定义文件
    │ ├─database.php 数据库配置文件
    │ └─route.php 路由配置文件

    生成默认模块

    php think build --module name

    将数据写入日志

    Log::info("params:".GuzzleHttpjson_encode($params));

    数据库操作
    //查询一个值
    $time = db('Article_images')->where('img_id',444)->value("art_id");
    //查询一条记录
    $time = db('Article_images')->where('img_id',444)->find();
    //查询数据集
    $time = db('Article_images')->where('img_id',444)->select();

    HTML页面中写PHP代码
    // 页面中写PHP代码
    function changeLive(vid) {
    <?php 
    if(session('?user')):
    ?>
    $("#player").html('');
    player.livePlayer({
    'width':'100%',
    'height':'600',
    'uid':'{$live_cfg["polyv_user_id"]}',
    'vid': vid
    });
    <?php else: ?>
    $("#player").html('<a href="{:U("Home/User/login")}"><img style="100%" 
    src="{$nbshop_config.shop_info_video_logo}" /></a>');
    <?php endif; ?>
    }

     查看PHP详细信息

    (配置到PHP目录即可)

    命令行:

    版本号等信息:php -v

    插件等:php -m

    workerman
    独立运行,不需要任何配置
    注意端口号占用情况
    小程序需配置https证书
    通信规则为wss

    workerman创建wss服务
    <?php
    require_once __DIR__ . '/Workerman/Autoloader.php';
    use WorkermanWorker;

    // 证书最好是申请的证书
    $context = array(
    // 更多ssl选项请参考手册 http://php.net/manual/zh/context.ssl.php
    'ssl' => array(
    // 请使用绝对路径
    'local_cert' => '磁盘路径/server.pem', // 也可以是crt文件
    'local_pk' => '磁盘路径/server.key',
    'verify_peer' => false,
    // 'allow_self_signed' => true, //如果是自签名证书需要开启此选项
    )
    );
    // 这里设置的是websocket协议(端口任意,但是需要保证没被其它程序占用)
    $worker = new Worker('websocket://0.0.0.0:443', $context);
    // 设置transport开启ssl,websocket+ssl即wss
    $worker->transport = 'ssl';
    $worker->onMessage = function($con, $msg) {
    $con->send('ok');
    };

    Worker::runAll();

    添加PHP系统环境变量

    将安装软件的执行路径添加到环境变量中即可,系统会自动识别可执行文件,添加成功后可在任意位置使用php命令

     

    去除index.php

    (如果使用的宝塔,需要在网站站点中配置伪静态)

    Apache伪静态

    1、 httpd.conf 配置文件中加载了 mod_rewrite.so 模块
    2、 AllowOverride None 将 None 改为 All

    3、 在public中添加.htaccess文件(注意index.php后面的?)(Apache使用)

    <IfModule mod_rewrite.c>
      Options +FollowSymlinks -Multiviews
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
    </IfModule>

     Nginx伪静态(在nginx.conf中添加)(PhpStudy中对应站点配置文件vhosts.conf中添加即可server ->location )

    location / {
        if (!-e $request_filename){
            rewrite ^(.*)$ /index.php?s=$1 last; break;
        }
    }

     如果使用的是PhpStudy伪静态如下(Apache使用)

    <IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
    </IfModule>


    volist
    name(必须):要输出的数据模板变量
    id(必须):循环变量
    offset(可选):要输出数据的offset
    length(可选):输出数据的长度
    key(可选):循环的key变量,默认值为i
    mod(可选):对key值取模,默认为2
    empty(可选):如果数据为空显示的字符串

    php
    //获取完整的url
    echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
    当前文件完整执行路径
    print(__FILE__);
    print(dirname(__FILE__));

    创建空对象

    $user = new Object1();
    $user->name = "悬剑";
    $user->id = 20;
    echo $user->id.'22';
    $obj1 = new stdClass; // Instantiate stdClass object
    $obj2 = new class{}; // Instantiate anonymous class
    $obj3 = (object)[]; // Cast empty array to object

    var_dump($obj1); // object(stdClass)#1 (0) {}
    var_dump($obj2); // object(class@anonymous)#2 (0) {}
    var_dump($obj3);

    PHP导出excel

     积累-T中

    20191107

    过段时间把PHP完全整理出来

    PHP函数记录

    phpinfo()
    打印当前php环境详细信息
    
    debug_backtrace
    产生一条回溯跟踪(backtrace)
    
    debug_print_backtrace();
    打印一条回溯跟踪

    返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。
    get_defined_vars() 

    获取所有已定义函数
    get_defined_functions()

    获取所有可用模块
    get_loaded_extensions()

    获取所有常量
    get_defined_constants();

    echo '获取域名'。$_SERVER['HTTP_HOST']."<br>";

    echo '获取网页地址'.$_SERVER['PHP_SELF']."<br>";

    echo '获取网址参数'.$_SERVER["QUERY_STRING"]."<br>";

    echo '获取用户代理'.$_SERVER['HTTP_REFERER']."<br>";

    echo '路径'.$_SERVER["REQUEST_URI"]."<br>";

    echo '获取完整的url'.'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br>";

    echo '获取完整的url'.'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']."<br>";

    echo '包含端口号的完整url'.'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]."<br>";

    $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]."<br>";

    echo '只取路径'.$url;

    ceil()向上取整

    round()四舍五入

    intval()转换整数

    floor()向下取整

    array_reverse()倒序数组
    array_push()添加数组

    URL转码
    urlencode();
    rawurlencode();
    解码
    urldecode()
    rawurldecode()

    打印当前页面所有数据

    <?php echo "<pre>"; print_r(get_defined_vars()); ?>



    PHP提交JSON

    <?php
    header("Content-type:application/json;charset=utf-8");
    $url="http://192.168.10.234:8080/uc/login/loginid"; 
    $param=array(
        //注册字段
        "name"=>"test001",
        "pass"=>"xxxx",
    );
    $data = json_encode($param); 
    list($return_code, $return_content) = http_post_data($url, $data);//return_code是http状态码
    print_r($return_content);exit;
    function http_post_data($url, $data_string) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "Content-Type: application/json; charset=utf-8",
            "Content-Length: " . strlen($data_string))
        );
        ob_start();
        curl_exec($ch);
        $return_content = ob_get_contents();
        ob_end_clean();
        $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        return array($return_code, $return_content);
    }

    PHP注册结束函数

    register_shutdown_function(array($this,"shutdown"));

    反射(https://www.php.net/manual/zh/book.reflection.php)

    public function reflection(){
            $class = input('class');
            $class = 'appcrontabcontroller\'.$class;
            $workClass_by_classname = new ReflectionClass($class);
            print_r($workClass_by_classname->getMethods());
            exit();
        }
  • 相关阅读:
    Spring_依赖注入DI
    Spring_懒加载与非懒加载
    Spring_提示模板配置/搭建spring框架/单例与多例/初始化方法和销毁方法
    Spring
    Mybatis_二级缓存
    Mybatis_一级缓存
    Mybatis_一对多延迟加载
    Mybatis_一对一查询
    MapReduce的核心资料索引 [转]
    Hadoop家族的各个成员
  • 原文地址:https://www.cnblogs.com/xuanjiange/p/11766113.html
Copyright © 2020-2023  润新知