开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。
比如网站根目录,或者分页数,或者域名等等。
那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。
大概有两种方式:
1:框架目录下引入(不推荐)
在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php
在autoload.php文件中引入。
这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,git是不会进行托管的。
2:在app目录下引入
在bootstrap目录下新建常量文件const.php,以及公共函数文件function.php
在app.php文件中引入:
php
复制代码
// 引入常量文件 require __DIR__ . '/const.php'; // 公共函数 require __DIR__ . '/function.php';
只有在app.php引入了,才会全局加载生效。
Const.php
php
复制代码
<?php // 预加载文件目录 define('STUDENT_DIR', '/xxx/xxxx/xxx/xxx/xxx/xxx/'); // 域名 define('DOMAIN','http://xxx.xxxx.net/'); // 网站根目录 define('WEB_PATH', '/xx/xx/xxxx/xxx/xxx/');
function.php
php
复制代码
<?php /** * @name: 获取客户端ip * @author: camellia * @date: 2021-12-17 */ function get_side_ip($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $pos = array_search('unknown',$arr); if(false !== $pos) unset($arr[$pos]); $ip = trim($arr[0]); }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; }elseif (isset($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR']; } // IP地址合法验证 $long = ip2long($ip); $ip = $long ? array($ip, $long) : array('0.0.0.0', 0); return $ip[$type]; } /** * @name: 处理方法 * @author: camellia * @date: 2021-12-17 */ function rmdirr($dirname) { if (!file_exists($dirname)) { return false; } if (is_file($dirname) || is_link($dirname)) { return unlink($dirname); } $dir = dir($dirname); if ($dir) { while (false !== $entry = $dir->read()) { if ($entry == '.' || $entry == '..') { continue; } //递归 rmdirr($dirname . DIRECTORY_SEPARATOR . $entry); } } }
调用的话,直接使用名字调用就可以了。
例如:在某模块下的某控制器下的某方法
php
复制代码
Public function xxx() { echo DOMAIN; // 调用公共函数库中的函数 $ip = get_side_ip(); echo $ip; }
这里要注意一下,我们自定义的公共函数库的中函数的方法名一定要注意,不要和框架代码中的函数名相同。否则会有问题。
有好的建议,请在下方输入你的评论。
欢迎访问个人博客 guanchao.site
欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的