php 文件分割符常量,phpDIRECTORY_SEPARATOR常量用法讲解

这篇博客介绍了PHP中的内置常量DIRECTORY_SEPARATOR,它用于返回与操作系统相关的路径分隔符。在Windows上是,在Linux上是/。文章通过一个实际问题展示了在编写跨平台兼容的代码时,使用DIRECTORY_SEPARATOR的重要性,特别是在定义文件路径和上传目录时。错误地使用固定分隔符可能导致在不同操作系统上的程序运行错误。解决方案是使用DIRECTORY_SEPARATOR确保路径在所有平台上都能正确解析。

DIRECTORY_SEPARATOR是一个显示系统分隔符的命令,DIRECTORY_SEPARATOR是PHP的内部常量,不需要任何定义与包含即可直接使用。

众所周知,在windows下路径分隔符是(当然/在部分系统上也是可以正常运行的),在linux上路径的分隔符是/,这就导致了一个问题,比如开发机器是windows,有一个图片上传程序,调试机器上指定的上传文件保存目录是:define(‘ROOT’, dirname(FILE).”upload”),在本地调试都很正常,但是上传到linux服务器的时候会发现会出错。

这个问题就是出在文件的分隔符上,windows上习惯性的使用作为文件分隔符,但是在linux上人家是不认识这个标识的,人家只认识/,于是就要引入下面这个php内置变量了:DIRECTORY_SEPARATOR。

上面的写法可以改写为以下无错写法:

define(‘ROOT’, dirname(FILE).DIRECTORY_SEPARATOR.”upload”);

这样就可以确保不会出错了。

例如discuz里面是这样写的:define(‘S_ROOT’, dirname(FILE).DIRECTORY_SEPARATOR);

回到问题本身上,DIRECTORY_SEPARATOR是一个返回跟操作系统相关的路径分隔符的php内置命令,在windows上返回,而在linux或者类unix上返回/,就是这么个区别,通常在定义包含文件路径或者上传保存目录的时候会用到。require_once dirname(FILE).DIRECTORY_SEPARATOR . './../../../wp-config.php';

require_once dirname(FILE).DIRECTORY_SEPARATOR.'inc/options.php';

这两句PHP代码,为什么前面部分用DIRECTORY_SEPARATOR,而后面部分却用"/"呢

众所周知,windows下的是\和/,而LINUX下的是/

在程序本地运行很正常,上传到服务器后,发现图片没有显示出来,图片链接是绝对路径 var/,而且当中带有 \ 但是我记得这个路径已经处理成相对路径的$path = dirname(dirname(dirname(FILE))).'\\';

$search = array( $path, '\\');

$replace = array( '', '/');

return str_replace($search,$replace,$this->tempfolder).$this->filename_prefix.$public.'.jpg';

第一行代码的用在LINUX "\\", 就不行。

解决的办法是 用PHP 预定义常量DIRECTORY_SEPARATOR来代替'\','/'这样的路径分隔符,以前觉得既然windows,LINUX 都支持/,那都用成 / 得了,这是没错的。可是从这个例子可以看出,当要对路径字符串进行处理的时候,就比较危险了,所以最好还是用DIRECTORY_SEPARATOR吧

在前端框架中,特别是在 SAP ABAP Web Dynpro 或类似的 UI 框架中,`lv_menu_separator_create` 是用于创建菜单分隔的典型方法之一。菜单分隔通常用于视觉上区分不同的菜单项,增强用户界面的可读性和结构清晰度。 要使用 `lv_menu_separator_create` 创建菜单分隔,需按照以下模式进行操作: 1. 首先,确保已经存在一个菜单容器(menu container)或菜单栏(menu bar),这是添加分隔的前提。 2. 调用 `lv_menu_separator_create` 方法,并将返回的分隔对象添加到目标菜单容器中。 以下是一个基于 ABAP Web Dynpro 环境的代码示例: ```abap DATA: lr_menu TYPE REF TO cl_wd_uielement, lr_separator TYPE REF TO cl_wd_uielement. " 创建菜单容器(假设已经存在) CREATE OBJECT lr_menu TYPE cl_wd_menu. " 创建菜单分隔 " CALL METHOD lv_menu_separator_create RECEIVING menu_separator = lr_separator. " 将分隔添加到菜单容器中 " CALL METHOD lr_menu->add_element EXPORTING element = lr_separator. ``` 此代码片段展示了如何创建一个菜单分隔并将其添加到菜单容器中。在实际应用中,可能需要根据具体的前端框架调整对象的创建方式和方法调用顺序。 需要注意的是,具体的方法名和类名可能会根据使用的框架版本和环境有所不同,因此建议查阅相关框架的官方文档或示例代码以获取准确的实现细节。 ### 菜单分隔的样式与行为 在某些框架中,菜单分隔的样式可以通过 CSS 或框架内置的属性进行自定义。例如,在 HTML/CSS 环境中,可以使用以下 CSS 样式来创建一个水平的分隔线: ```css .menu-separator { height: 1px; background-color: #ccc; margin: 5px 0; } ``` 如果框架支持自定义渲染,可以通过设置分隔元素的样式属性来应用这些 CSS 类。 ### 总结 使用 `lv_menu_separator_create` 创建菜单分隔是一种常见的做法,尤其在 ABAP Web Dynpro 等 SAP 前端框架中[^1]。通过将分隔添加到菜单容器中,可以有效提升用户界面的清晰度和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值