分类 PHP 下的文章

1、在文件support/helper.php添加:

function env($key, $default = null)
{
    static $env_config = [];
    if (!$env_config) {
        $env_config = include base_path() . DIRECTORY_SEPARATOR . '.env.php';
    }
    return $env_config[$key] ?? $default;
}

2、在项目根目录添加.env.php

<?php

// config/app.php
$app = [
    'APP_NAME' => 'webman',
    'APP_ENV' => 'dev',
    'APP_DEBUG' => true,
];

// config/database.php
$mysql = [
    'DB_HOST' => '127.0.0.1',
    'DB_PORT' => 3306,
    'DB_USER' => 'root',
    'DB_PASSWORD' => 'root',
];

//合并数组
return array_merge($app, $mysql);

3、在config/database.php中改为:

return [
    // 默认数据库
    'default' => 'mysql',

    // 各种数据库配置
    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'host' => env("DB_HOST", '127.0.0.1'),
            'port' => env("DB_PORT", 3306),
            'database' => 'test',
            'username' => env('DB_USER', 'root'),
            'password' => env('DB_PASSWORD', 'root'),
            'unix_socket' => '',
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

注意:.env.php 不提交到版本库(.gitignore里加一行.env.php)。

本文转自:https://www.workerman.net/q/7564

<?php
function foo(){
    static $int = 0;          // correct
    static $int = 1+2;        // correct 
    static $int = sqrt(121);  // wrong  (as it is a function)

    $int++;
    echo $int;
}
?>

常量表达式的结果可以赋值给静态变量,但是动态表达式(比如函数调用)会导致解析错误。因为静态声明是在编译时解析的。

应用场景

在使用php的过程中,我们常常需要去添加一些PHP扩展库。但是重新对php进行编译是比较蛮烦的,所以这时候我们可以使用phpizephp进行添加扩展。并且phpize编译的扩展库可以随时启用或停用,比较灵活。

使用方法

extention为要挂载的扩展包

1.wget extension.tar.gz下载相应的扩展包并解压。
2.cd extension/切换到扩展extension的目录中
3./php/bin/phpize 运行php安装目录下的phpize文件,这时候会在extension目录下生成相应的configure文件。
4./configure --with-php-config=/php/bin/php-config 运行配置,如果你的服务器上只是装了一个版本的php则不需要添加--with-php-config
。后面的参数只是为了告诉phpize要建立基于哪个版本的扩展。
5.make && make install 编译模块编译好模块之后,需要让php启用它。在php.ini文件中加入把extension.so开启即可。重启php服务。

作用

其实phpize是一个运行脚本,主要作用是检测php的环境还有就是在特定的目录生成相应的configure文件,这样make install之后,生成的.so文件才会自动加载到php扩展目录下面。

转自:https://www.cnblogs.com/houss/p/11341280.html

spl_autoload_register() 函数可以指定一个函数来替代 __autoload() 函数的功能。语法格式如下:

spl_autoload_register([$autoload_function [, $throw = true [, $prepend = false ]]])

参数说明如下:

  • $autoload_function:要替代 __autoload() 函数的函数名称,也可以是一个匿名函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数 spl_autoload()
  • $throw:用来设置 $autoload_function 无法成功注册时,spl_autoload_register() 函数是否抛出异常;
  • $prepend:如果是 true,则 spl_autoload_register() 函数会添加 $autoload_function 函数到队列之首,否则添加到队列尾部。
注意:与 __autoload() 函数不同,spl_autoload_register() 可以多次定义。
<?php
    spl_autoload_register('loadClass');
    function loadClass($class){
        $file = './'.$class.'.php';
        include_once($file);
    }

    $obj = new Demo();
?>
运行上面的代码同样需要上面示例中用到的 Demo.php 文件。

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/Users/liziyu/website/xfcms_base/public"
    ServerName xfcms-base.local
    Options Indexes FollowSymLinks
    <Directory />
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>
</VirtualHost>


stream_bucket_append函数:为队列添加数据 
stream_bucket_make_writeable函数:从操作的队列中返回一个数据对象
stream_bucket_new函数:为当前队列创建一个新的数据
stream_bucket_prepend函数:预备数据到队列 
stream_context_create函数:创建数据流上下文
stream_context_get_default函数:获取默认的数据流上下文
stream_context_get_options函数:获取数据流的设置
stream_context_set_option函数:对数据流、数据包或者上下文进行设置
stream_context_set_params函数:为数据流、数据包或者上下文设置参数
stream_copy_to_stream函数:在数据流之间进行复制操作
stream_filter_append函数:为数据流添加过滤器
stream_filter_prepend函数:为数据流预备添加过滤器
stream_filter_register函数:注册一个数据流的过滤器并作为PHP类执行
stream_filter_remove函数:从一个数据流中移除过滤器
stream_get_contents函数:读取数据流中的剩余数据到字符串
stream_get_filters函数:返回已经注册的数据流过滤器列表
stream_get_line函数:按照给定的定界符从数据流资源中获取行
stream_get_meta_data函数:从封装协议文件指针中获取报头/元数据
stream_get_transports函数:返回注册的Socket传输列表
stream_get_wrappers函数:返回注册的数据流列表
stream_register_wrapper函数:注册一个用PHP类实现的URL封装协议
stream_select函数:接收数据流数组并等待它们状态的改变
stream_set_blocking函数:将一个数据流设置为堵塞或者非堵塞状态
stream_set_timeout函数:对数据流进行超时设置
stream_set_write_buffer函数:为数据流设置缓冲区
stream_socket_accept函数:接受由函数stream_ socket_server()创建的Socket连接
stream_socket_client函数:打开网络或者UNIX主机的Socket连接
stream_socket_enable_crypto函数:为一个已经连接的Socket打开或者关闭数据加密
stream_socket_get_name函数:获取本地或者网络Socket的名称
stream_socket_pair函数:创建两个无区别的Socket数据流连接
stream_socket_recvfrom函数:从Socket获取数据,不管其连接与否
stream_socket_sendto函数:向Socket发送数据,不管其连接与否
stream_socket_server函数:创建一个网络或者UNIX Socket服务端
stream_wrapper_restore函数:恢复一个事先注销的数据包
stream_wrapper_unregister函数:注销一个URL地址包


array_change_key_case 更改数组中所有键为大写或小写
array_chunk 将一个数组分割成多个
array_column 返回数组中指定列的值
array_combine 使用一个数组作为键,另一个数组作为值创建新数组
array_count_values 统计数组中各个值的个数
array_diff_assoc 带索引检查计算数组的差集
array_diff_key 使用键名比较数组的差集
array_diff_uassoc 用用户提供的回调函数做索引检查来计算数组的差集
array_diff_ukey 用回调函数对键名比较计算数组差集
array_diff 计算数组差集
array_fill_keys 使用指定的键和值填充数组
array_fill 用给定的值填充数组
array_filter 使用回调函数过滤数组元素
array_flip 交换数组中的键和值
array_intersect_assoc 带索引计算数组的交集
array_intersect_key 使用键名比较计算数组的交集
array_intersect_uassoc 带索引检查计算数组的交集,用回调函数比较索引
array_intersect_ukey 在键名上使用回调函数来比较计算数组的交集
array_intersect 计算数组的交集
array_is_list 检查给定的数组是否为列表 (PHP 8 >= 8.1.0)
array_key_exists 检查数组里是否有指定的键名或索引
array_key_first 获取数组的第一个键值
array_key_last 获取一个数组的最后一个键值
array_keys 返回数组中部分或所有的键名
array_map 为数组每个元素应用回调函数
array_merge_recursive 递归的合并一个或多个数组
array_merge 合并一个或多个数组
array_multisort 对多个数组或多维数组进行排序
array_pad 以指定长度将一个值填充进数组
array_pop 弹出数组最后一个单元(出栈)
array_product 计算数组中所有值的乘积
array_push 将一个或多个单元压入数组末尾(入栈)
array_rand 从数组中随机取出一个或多个随机键
array_reduce 用回调函数迭代地将数组简化为单一的值
array_replace_recursive 使用传递的数组递归替换第一个数组的元素
array_replace 使用传递的数组替换第一个数组元素
array_reverse 返回单元顺序相反的数组
array_search 在数组中搜索给定的值,如果成功返回首个相应的键名
array_shift 将数组开头的单元移出数组
array_slice 从数组中取出一段
array_splice 去掉数组中的某一部分并用其它值取代
array_sum 对数组中的所有值求和
array_udiff_assoc 带索引检查计算数组的差集,用回调函数比较数据
array_udiff_uassoc 带索引检查计算数组的差集,用回调函数比较数据和索引
array_udiff 用回调函数比较数据来计算数组的差集
array_uintersect_assoc 带索引检查计算数组的交集,用回调函数比较数据
array_uintersect_uassoc 带索引检查计算数组的交集,用单独的回调函数比较数据和索引
array_uintersect 计算数组的交集,用回调函数比较数据
array_unique 移除数组中重复的值
array_unshift 在数组开头插入一个或多个单元
array_values 返回数组中所有的值
array_walk_recursive 对数组中的每个成员递归地应用用户函数
array_walk 使用用户自定义函数对数组中的每个元素做回调处理
array 新建一个数组
arsort 对数组进行降向排序并保持索引关系
asort 对数组进行升序排序并保持索引关系
compact 建立一个数组,包括变量名和它们的值
count 计算数组中的单元数目,或对象中的属性个数
current 返回数组中当前的值
each 返回数组中当前的键/值对并将数组指针向前移动一步(自PHP7.2起废弃)
end 将数组的内部指针指向最后一个单元
extract 从数组中将变量导入到当前的符号表
in_array 检查数组中是否存在某个值
key_existsarray_key_exists
key 返回数组中当前单元的键名
krsort 对数组按照键名逆向排序
ksort 对数组根据键名升序排序
list 把数组中的值赋给一组变量
natcasesort 用“自然排序”算法对数组进行不区分大小写字母的排序
natsort 用“自然排序”算法对数组排序
next 将数组中的内部指针向前移动一位
poscurrent
prev 将数组的内部指针倒回一位
range 根据范围创建数组,包含指定的元素
reset 将数组的内部指针指向第一个单元
rsort 对数组进行降序排序
shuffle 打乱数组
sizeofcount()
sort 对数组升序排序
uasort 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort 使用用户自定义的比较函数对数组中的键名进行排序
usort 使用用户自定义的比较函数对数组中的值进行排序

转自: https://learnku.com/articles/63034