Stay hungry, Stay foolish

0%

PHP是解释型语言。我们写的代码都要经过php给翻译成底层可执行的代码。如果程序中有php不能解析的语句,就会报Parse error的错误。

Parse error: syntax error, unexpected T_STRING

这里的T_STRING就是一个解析代号。

解析代号表

手册里列出了诸如下面这样的对应关系表:

T_ABSTRACT abstract 抽象类(自 PHP 5.0.0 起可用)
T_AND_EQUAL &= 赋值运算符
T_ARRAY array() array(),数组语法
T_ARRAY_CAST (array) 类型转换

阅读全文 »

环境

  • php5.2.6、apache2.2.8、mysql5.0.51b、xp(虚拟机)
  • php5.3.5、apache2.2.17、mysql5.5.8、win7

实例

外部调用

1
2
3
4
5
6
7
8
class ClassTest{
public $_publicT;
protected $_protectedT;
private $_privateT;
}

$classT = new ClassTest();
var_dump(get_class_vars(get_class($classT)));
阅读全文 »

##需求

test.php里有一个变量$_auth = ‘222’;使其可以在另一个文件index.php里访问

1
2
3
4
5
6
7
8
9
10
11
12
function test(){
require_once 'test.php';
var_dump($_auth);
}
class Test{
static function testRequire(){
require_once 'test.php';
var_dump($_auth);
}
}
test(); //output:222
Test::testRequire(); //output:Undefined variable: _auth
阅读全文 »

ruby的安装

这里我选择的是1.9.2-p0

  • 安装

exe文件的安装直接下一步没有悬念。

  • 版本检查

安装成功后运行“Start Command Prompt with Ruby”,输入

-v```和```gem -v```检查一下版本。
1
2
3
4
5
6
7
8
9
10

+ 遇到的问题

最开始我下载的是1.86版的,进入后gem没法更新,一看gem的版本,还停留在0.9,从网上下载较新的版本才更新成功(ruby1.86支持的gem版本只能到1.4.2)。

<!-- more -->

## DevKit的安装

安装好ruby后,我就急呼呼的安装jekyll

gem install jekyll

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

结果报错:

Failed to build gem native extension

在jekyll-wiki-Install上有这个问题的解答

If you encounter errors like Failed to build gem native extension on Windows you may need to install RubyInstaller DevKit.


DevKit是什么?

The DevKit is a toolkit that makes it easy to build and use native C/C++

extensions such as RDiscount and RedCloth for Ruby on Windows.

——[rubyinstaller wiki](https://github.com/oneclick/rubyinstaller/wiki/development-kit)

版本的选择

for the legacy RubyInstaller v1.8.6 use the DevKit-3.4.5 available at our

archive downloads page. For RubyInstaller versions 1.8.7, 1.9.2, and 1.9.3 use

the DevKit 4.5.2 from our main downloads page.

+ 下载

rubyinstaller.org的网站一直打不开,最后还是搜索到了[github](https://github.com/oneclick/rubyinstaller/downloads/)上,这个是最早的rubyinstaller还是一个备份?

下载**DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe**

直接打开解压到D:/DevKit目录下。

+ 安装

安装的命令网上到处都是,我这里再重复一下,进入到“Start Command Prompt with Ruby”的界面,依次执行下面命令:

cd DevKit
ruby dk.rb init
ruby dk.rb install
ruby dk.rb review


<a href="http://img.sunzy.org/2012/05/DevKit-install.jpg"><img class="alignnone size-full wp-image-509" title="DevKit-install" src="http://img.sunzy.org/2012/05/DevKit-install.jpg" alt="" width="642" height="326" /></a>

+ 遇到的问题

[rubyforge](http://rubyforge.org/frs/?group_id=167)上只有一个版本的DevKit:3.4.5r3。下载解压进行安装一直提示:

> ruby:No such file or directory -- dk.rb(LoadError)

和之后下载的4.5.2目录结构区别很大,不知道是下的文件不对,还是版本不对的原因。

Essential PHP Security的1.1.1. 全局变量注册:

当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立。它让PHP编程变得容易和方便,但同时也带来了安全隐患。

何为register_globals

register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables.

阅读全文 »

flag

对于Memcache的add、set以及replace方法里有个flag的标识:

1
bool Memcache::add( string $key ,mixed $var [, int $flag [, int $expire ]] )

之前在使用时一直不甚了了,抽空补了一下。

先看PHP手册里对其的解释:

flag:使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)。

阅读全文 »