标签 知识 下的文章

PHP 常量定义

突然想到关于常量的问题。常量的作用域是全局的,也就意味着无论在哪里只要执行到定义常量,就能一直使用(包括函数内也不需要重复定义),不需要改变的量我们会首选常量。

常量名通常大写

如果使用一个没有声明的常量,常量名称会被解析为一个普通字符串,但会比直接使用字符串慢近八倍,所以声明字符串一定要加上引号

常量前不需要$,用define()函数来声明,如果只是要检查常量是否定义好了,用defined()函数检查。

define("CON_INT", 100),定义了一个名为CON_INT的常量
define()还有一个可选参数,因为默认是区分大小写的,define("GREETING", "Hello World", true),设置为true的话就不区分大小写了。
常量不能被重新定义或者取消定义,只能是标量

define()的扩展阅读:http://www.php.net/manual/zh/function.define.php


类中常量用const关键词,在这里略有提及:http://codesky.me/archives/php-public-final.wind

const CONSTANT = 'value'就行了,但不能通过实例对象来访问

Javascript Math.random函数生成随机数

Math.random(); //该方法产生一个0到1之间的浮点数。
Math.floor(Math.random()*10+1); //1-10
Math.floor(Math.random()*24);//0-23 
var now=new Date(); 
var number = now.getSeconds(); //这将产生一个基于目前时间的0到59的整数。 

var now=new Date(); 
var number = now.getSeconds()%43; //这将产生一个基于目前时间的0到42的整数。 

关于这点,math.random()具体怎么实现我们不必在意,只要知道怎么用就行了。另外Math.random()实际上取的是[0, 1),加上Math.floor()向下取整,也就是取小于x的整数,在非负数范围内相当于舍去小数点,于是就能达到这个效果了

bootstrap激活tooltip

bootstrap官方帮助说:

出于性能方面的考虑,工具提示和弹框组件的data属性api是选择性加入的,也就是说你必须自己初始化他们。

初始化 在需要使用tooltip的元素里加上:

onMouseOver="$(this).tooltip('show')"

不然光靠进入js还是没办法的。然后设置上data-toggle="tooltip",设置好title属性,就OK了

PHP 浏览器已知文件类型下载写法

header()真的是个好东西,下载的本体其实就是把路径给出来,未知格式浏览器无解自然会弹出下载框,已知格式怎么破呢?比如html,这不就成了直接打开了吗?

    header('Content-Disposition: attachment; filename="'.$filename.'"');
    header('Content-Length: '.filesize($filename));

    readfile($filename);

加上header()之后读取文件,收工。

PHP 文件类函数以及一个新手坑

PHP文件基本操作函数有:
unlink()删除文件
rename()重命名文件或目录
copy()复制文件
另外还有文件夹操作
mkdir() 建立文件夹
rmdir() 删除空文件夹(非空会报错)

比如rename()手册上会这么写:
bool rename ( string $oldname , string $newname [, resource $context ] )

嗯 我个人觉得有点坑,其实与其说name不如说带上路径的文件/目录名好了,它不仅是要name,还要route啊!!

PHP die()的运用

die()其实也就是exit(),可以输出内容并且结束脚本,否则PHP还是会继续向下运行,除非是致命错误:
这样我们就不需要再设变量然后嵌套if来达成如果这里报错了。

写成die('错误'),那么就会在运行到这行结束脚本并且输出错误

        if (strpos($route, '..') !== FALSE || strpos($route, 'upload') === FALSE) {
            echo '路径非法';
            //$problem = TRUE;
            die();
        }

比如这个 本来想用$problem嵌套之后判断在运行之后的代码,但用了die()之后就直接搞定了,如果是有报错的部分,也可以与@配合使用(@能忽略报错提示)

PHP 关于传值:GET与POST

事实上,这不应该属于PHP的部分而更应该说是HTTP协议(?)所以说我还得去补一补协议的说……

传值分为GET和POST,POST相对比较保险,因为内容不可见的,想传什么也可以加个hidden传过去(唔,如果有人篡改表单会怎么样),GET的实现比较容易,网址后面加个?xxx=yyy,那么我们就能用$_GET['xxx']这个超全局变量获取到yyy了,可是更不好,万一有人改了这个就很混乱了=A=

所以光学PHP还是不大够啊,目前我的大多数内容都是用GET来传值的=_=因为GET更容易,POST我的能力内只有提交表单才能POST一下=A=