Eclipse,快捷键

三月 7th, 2010 No comments »

Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行 
Ctrl+Alt+↓ 复 制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用, 可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑 的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在 当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定 位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或 View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速 显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速 显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小 键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用 Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正 向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一 个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关 闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为 小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要 在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是 Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多 劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修 改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取 成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合 并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药 (Undo)

编辑
作用域 功能 快捷键 
全局 查找并替换 Ctrl+F 
文本编辑器 查找上一 个 Ctrl+Shift+K 
文本编辑器 查找下一个 Ctrl+K 
全局 撤销 Ctrl+Z 
全局 复制 Ctrl+C 
全 局 恢复上一个选择 Alt+Shift+↓ 
全局 剪切 Ctrl+X 
全局 快速修正 Ctrl1+1 
全局 内容辅 助 Alt+/ 
全局 全部选中 Ctrl+A 
全局 删除 Delete 
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space 
Java 编辑器 显示工具提示描述 F2 
Java编辑器 选择封装元素 Alt+Shift+↑ 
Java编辑器 选择上一个元 素 Alt+Shift+← 
Java编辑器 选择下一个元素 Alt+Shift+→ 
文本编辑器 增量查找 Ctrl+J 
文 本编辑器 增量逆向查找 Ctrl+Shift+J 
全局 粘贴 Ctrl+V 
全局 重做 Ctrl+Y 

 
查 看
作用域 功能 快捷键 
全局 放大 Ctrl+= 
全局 缩小 Ctrl+- 

 
窗口
作用 域 功能 快捷键 
全局 激活编辑器 F12 
全局 切换编辑器 Ctrl+Shift+W 
全局 上一个编辑 器 Ctrl+Shift+F6 
全局 上一个视图 Ctrl+Shift+F7 
全局 上一个透视图 Ctrl+Shift+F8 
全 局 下一个编辑器 Ctrl+F6 
全局 下一个视图 Ctrl+F7 
全局 下一个透视图 Ctrl+F8 
文本编辑器 显示 标尺上下文菜单 Ctrl+W 
全局 显示视图菜单 Ctrl+F10 
全局 显示系统菜单 Alt+- 

 
导 航
作用域 功能 快捷键 
Java编辑器 打开结构 Ctrl+F3 
全局 打开类型 Ctrl+Shift+T 
全 局 打开类型层次结构 F4 
全局 打开声明 F3 
全局 打开外部javadoc Shift+F2 
全局 打开资 源 Ctrl+Shift+R 
全局 后退历史记录 Alt+← 
全局 前进历史记录 Alt+→ 
全局 上一 个 Ctrl+, 
全局 下一个 Ctrl+. 
Java编辑器 显示大纲 Ctrl+O 
全局 在层次结构中打开类 型 Ctrl+Shift+H 
全局 转至匹配的括号 Ctrl+Shift+P 
全局 转至上一个编辑位置 Ctrl+Q 
Java 编辑器 转至上一个成员 Ctrl+Shift+↑ 
Java编辑器 转至下一个成员 Ctrl+Shift+↓ 
文本编辑器 转至 行 Ctrl+L 

 
搜索
作用域 功能 快捷键 
全局 出现在文件中 Ctrl+Shift+U 
全 局 打开搜索对话框 Ctrl+H 
全局 工作区中的声明 Ctrl+G 
全局 工作区中的引用 Ctrl+Shift+G 

 
文 本编辑
作用域 功能 快捷键 
文本编辑器 改写切换 Insert 
文本编辑器 上滚行 Ctrl+↑ 
文本编辑器 下 滚行 Ctrl+↓ 

 
文件
作用域 功能 快捷键 
全局 保存 Ctrl+X 
Ctrl+S 
全 局 打印 Ctrl+P 
全局 关闭 Ctrl+F4 
全局 全部保存 Ctrl+Shift+S 
全局 全部关 闭 Ctrl+Shift+F4 
全局 属性 Alt+Enter 
全局 新建 Ctrl+N 

 
项目
作 用域 功能 快捷键 
全局 全部构建 Ctrl+B 

 
源代码
作用域 功能 快捷键 
Java编辑 器 格式化 Ctrl+Shift+F 
Java编辑器 取消注释 Ctrl+\ 
Java编辑器 注释 Ctrl+/ 
Java 编辑器 添加导入 Ctrl+Shift+M 
Java编辑器 组织导入 Ctrl+Shift+O 
Java编辑器 使用 try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl+1自动修正。 

 
运 行
作用域 功能 快捷键 
全局 单步返回 F7 
全局 单步跳过 F6 
全局 单步跳入 F5 
全局 单步跳入 选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 继续 F8 
全局 使用过滤器单步执行 Shift+F5 
全 局 添加/去除断点 Ctrl+Shift+B 
全局 显示 Ctrl+D 
全局 运行上次启动 Ctrl+F11 
全局 运行 至行 Ctrl+R 
全局 执行 Ctrl+U 

 
重构
作用域 功能 快捷键 
全局 撤销重 构 Alt+Shift+Z 
全局 抽取方法 Alt+Shift+M 
全局 抽取局部变量 Alt+Shift+L 
全局 内 联 Alt+Shift+I 
全局 移动 Alt+Shift+V 
全局 重命名 Alt+Shift+R 
全局 重 做 Alt+Shift+Y

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

天涯易读整理

一月 6th, 2010 No comments »

天涯易读整理,入口:

http://read.orzero.com

历时两个多月写成的一个试验品,希望给大家带来一点方便,有什么建议或者错误可以在这里指出,比较好的建议我会试着慢慢实现。

也欢迎大家在此提出使用感受,作为一个工具它需要大家的帮助好不断改进。

天涯易读整理先是作为一个基础,以后会慢慢推出别的网站的专门整理工具。

下一步实现目标:起点小说,迅雷影视,豆瓣,时光网。

最终目标:建立自己的在线娱乐网站。

无头:网络是电子抽象出的时空,我们是游离在之中的信息元,寄生只是一个阶段,不断的变异,才可能变得强大。

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

html色彩表

十二月 10th, 2009 No comments »

Web安全颜色

以前,很多电脑显示器最多支持256色,因此出现了216种Web安全颜色,以保证网页的颜色能够正确显示。

那为什么不是256种Web安全颜色呢?因为Microsoft和Mac操作系统有40种不同的系统保留颜色。

以下就是216种Web安全颜色:

#000000 #000033 #000066 #000099 #0000cc #0000ff
#003300 #003333 #003366 #003399 #0033cc #0033ff
#006600 #006633 #006666 #006699 #0066cc #0066ff
#009900 #009933 #009966 #009999 #0099cc #0099ff
#00cc00 #00cc33 #00cc66 #00cc99 #00cccc #00ccff
#00ff00 #00ff33 #00ff66 #00ff99 #00ffcc #00ffff
#330000 #330033 #330066 #330099 #3300cc #3300ff
#333300 #333333 #333366 #333399 #3333cc #3333ff
#336600 #336633 #336666 #336699 #3366cc #3366ff
#339900 #339933 #339966 #339999 #3399cc #3399ff
#33cc00 #33cc33 #33cc66 #33cc99 #33cccc #33ccff
#33ff00 #33ff33 #33ff66 #33ff99 #33ffcc #33ffff
#660000 #660033 #660066 #660099 #6600cc #6600ff
#663300 #663333 #663366 #663399 #6633cc #6633ff
#666600 #666633 #666666 #666699 #6666cc #6666ff
#669900 #669933 #669966 #669999 #6699cc #6699ff
#66cc00 #66cc33 #66cc66 #66cc99 #66cccc #66ccff
#66ff00 #66ff33 #66ff66 #66ff99 #66ffcc #66ffff
#990000 #990033 #990066 #990099 #9900cc #9900ff
#993300 #993333 #993366 #993399 #9933cc #9933ff
#996600 #996633 #996666 #996699 #9966cc #9966ff
#999900 #999933 #999966 #999999 #9999cc #9999ff
#99cc00 #99cc33 #99cc66 #99cc99 #99cccc #99ccff
#99ff00 #99ff33 #99ff66 #99ff99 #99ffcc #99ffff
#cc0000 #cc0033 #cc0066 #cc0099 #cc00cc #cc00ff
#cc3300 #cc3333 #cc3366 #cc3399 #cc33cc #cc33ff
#cc6600 #cc6633 #cc6666 #cc6699 #cc66cc #cc66ff
#cc9900 #cc9933 #cc9966 #cc9999 #cc99cc #cc99ff
#cccc00 #cccc33 #cccc66 #cccc99 #cccccc #ccccff
#ccff00 #ccff33 #ccff66 #ccff99 #ccffcc #ccffff
#ff0000 #ff0033 #ff0066 #ff0099 #ff00cc #ff00ff
#ff3300 #ff3333 #ff3366 #ff3399 #ff33cc #ff33ff
#ff6600 #ff6633 #ff6666 #ff6699 #ff66cc #ff66ff
#ff9900 #ff9933 #ff9966 #ff9999 #ff99cc #ff99ff
#ffcc00 #ffcc33 #ffcc66 #ffcc99 #ffcccc #ffccff
#ffff00 #ffff33 #ffff66 #ffff99 #ffffcc #ffffff

微软支持的颜色名称

下面是微软IE4.0以上都支持的颜色名称:

aliceblue
(#f0f8ff)
antiquewhite
(#faebd7)
aqua
(#00ffff)
aquamarine
(#7fffd4)
azure
(#f0ffff)
beige
(#f5f5dc)
bisque
(#ffe4c4)
black
(#000000)
blanchedalmond
(#ffebcd)
blue
(#0000ff)
blueviolet
(#8a2be2)
brown
(#a52a2a)
burlywood
(#deb887)
cadetblue
(#5f9ea0)
chartreuse
(#7fff00)
chocolate
(#d2691e)
coral
(#ff7f50)
cornflowerblue
(#6495ed)
cornsilk
(#fff8dc)
crimson
(#dc143c)
cyan
(#00ffff)
darkblue
(#00008b)
darkcyan
(#008b8b)
darkgoldenrod
(#b8860b)
darkgray
(#a9a9a9)
darkgreen
(#006400)
darkkhaki
(#bdb76b)
darkmagenta
(#8b008b)
darkolivegreen
(#556b2f)
darkorange
(#ff8c00)
darkorchid
(#9932cc)
darkred
(#8b0000)
darksalmon
(#e9967a)
darkseagreen
(#8fbc8b)
darkslateblue
(#483d8b)
darkslategray
(#2f4f4f)
darkturquoise
(#00ced1)
darkviolet
(#9400d3)
deeppink
(#ff1493)
deepskyblue
(#00bfff)
dimgray
(#696969)
dodgerblue
(#1e90ff)
firebrick
(#b22222)
floralwhite
(#fffaf0)
forestgreen
(#228b22)
fuchsia
(#ff00ff)
gainsboro
(#dcdcdc)
ghostwhite
(#f8f8ff)
gold
(#ffd700)
goldenrod
(#daa520)
gray
(#808080)
green
(#008000)
greenyellow
(#adff2f)
honeydew
(#f0fff0)
hotpink
(#ff69b4)
indianred
(#cd5c5c)
indigo
(#4b0082)
ivory
(#fffff0)
khaki
(#f0e68c)
lavender
(#e6e6fa)
lavenderblush
(#fff0f5)
lawngreen
(#7cfc00)
lemonchiffon
(#fffacd)
lightblue
(#add8e6)
lightcoral
(#f08080)
lightcyan
(#e0ffff)
lightgoldenrodyellow
(#fafad2)
lightgreen
(#90ee90)
lightgrey
(#d3d3d3)
lightpink
(#ffb6c1)
lightsalmon
(#ffa07a)
lightseagreen
(#20b2aa)
lightskyblue
(#87cefa)
lightslategray
(#778899)
lightsteelblue
(#b0c4de)
lightyellow
(#ffffe0)
lime
(#00ff00)
limegreen
(#32cd32)
linen
(#faf0e6)
magenta
(#ff00ff)
maroon
(#800000)
mediumaquamarine
(#66cdaa)
mediumblue
(#0000cd)
mediumorchid
(#ba55d3)
mediumpurple
(#9370db)
mediumseagreen
(#3cb371)
mediumslateblue
(#7b68ee)
mediumspringgreen
(#00fa9a)
mediumturquoise
(#48d1cc)
mediumvioletred
(#c71585)
midnightblue
(#191970)
mintcream
(#f5fffa)
mistyrose
(#ffe4e1)
moccasin
(#ffe4b5)
navajowhite
(#ffdead)
navy
(#000080)
oldlace
(#fdf5e6)
olive
(#808000)
olivedrab
(#6b8e23)
orange
(#ffa500)
orangered
(#ff4500)
orchid
(#da70d6)
palegoldenrod
(#eee8aa)
palegreen
(#98fb98)
paleturquoise
(#afeeee)
palevioletred
(#db7093)
papayawhip
(#ffefd5)
peachpuff
(#ffdab9)
peru
(#cd853f)
pink
(#ffc0cb)
plum
(#dda0dd)
powderblue
(#b0e0e6)
purple
(#800080)
red
(#ff0000)
rosybrown
(#bc8f8f)
royalblue
(#4169e1)
saddlebrown
(#8b4513)
salmon
(#fa8072)
sandybrown
(#f4a460)
seagreen
(#2e8b57)
seashell
(#fff5ee)
sienna
(#a0522d)
silver
(#c0c0c0)
skyblue
(#87ceeb)
slateblue
(#6a5acd)
slategray
(#708090)
snow
(#fffafa)
springgreen
(#00ff7f)
steelblue
(#4682b4)
tan
(#d2b48c)
teal
(#008080)
thistle
(#d8bfd8)
tomato
(#ff6347)
turquoise
(#40e0d0)
violet
(#ee82ee)
wheat
(#f5deb3)
white
(#ffffff)
whitesmoke
(#f5f5f5)
yellow
(#ffff00)
yellowgreen
(#9acd32)
VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

PHP5对象处理的实例说明

十一月 18th, 2009 No comments »
PHP处理对象部分的内核完全重新开发过,提供更多功能的同时也提高了性能。在以前版本的php中,处理对象和处理基本类型(数字,字符串)的方式是一样的。这种方式的缺陷是:当将对象赋值给一个变量时,或者通过参数传递对象时,对象将被完全拷贝一份。在新的版本里,上述操作将传递引用(可以把引用理解成对象的标识符),而非值。
很多PHP程序员可能甚至没有察觉到老的对象处理方式。事实上,大多数的php应用都可以很好地运行。或者仅仅需要很少的改动。
私有和受保护成员
PHP5引入了私有和受保护成员变量的概念。我们可以用它来定义类成员的可见性。
例子
受保护成员可以被子类访问, 而私有成员只能被类本身访问。

代码:--------------------------------------------------------------------------------

<?php
class MyClass {
   private $Hello = "Hello, World!\n";
   protected $Bar = "Hello, Foo!\n";
   protected $Foo = "Hello, Bar!\n";

   function printHello() {
       print "MyClass::printHello() " . $this->Hello;
       print "MyClass::printHello() " . $this->Bar;
       print "MyClass::printHello() " . $this->Foo;
   }
}

class MyClass2 extends MyClass {
   protected $Foo;

   function printHello() {
       MyClass::printHello();                          /* Should print */
       print "MyClass2::printHello() " . $this->Hello; /* Shouldn't print out anything */
       print "MyClass2::printHello() " . $this->Bar;  /* Shouldn't print (not declared)*/
       print "MyClass2::printHello() " . $this->Foo;  /* Should print */
   }
}

$obj = new MyClass();
print $obj->Hello;  /* Shouldn't print out anything */
print $obj->Bar;    /* Shouldn't print out anything */
print $obj->Foo;    /* Shouldn't print out anything */
$obj->printHello(); /* Should print */

$obj = new MyClass2();
print $obj->Hello;  /* Shouldn't print out anything */
print $obj->Bar;    /* Shouldn't print out anything */
print $obj->Foo;    /* Shouldn't print out anything */
$obj->printHello();
?>
--------------------------------------------------------------------------------

私有方法和受保护方法
PHP5也引入了私有方法和受保护方法的概念。
例子:

代码:--------------------------------------------------------------------------------

<?php
class Foo {
   private function aPrivateMethod() {
       echo "Foo::aPrivateMethod() called.\n";
   }

   protected function aProtectedMethod() {
       echo "Foo::aProtectedMethod() called.\n";
       $this->aPrivateMethod();
   }
}

class Bar extends Foo {
   public function aPublicMethod() {
       echo "Bar::aPublicMethod() called.\n";
       $this->aProtectedMethod();
   }
}

$o = new Bar;
$o->aPublicMethod();
?>
--------------------------------------------------------------------------------

以前的不使用类的老代码,没有访问修饰符(public, protected, private)的代码可以不经改动运行。
抽象类和抽象方法
Php5也引入了抽象类和抽象方法的概念。抽象方法只是声明了方法的签名并不提供它的实现。包含抽象方法的类必须被声明成抽象类。
例子:

代码:--------------------------------------------------------------------------------

<?php
abstract class AbstractClass {
   abstract public function test();
}

class ImplementedClass extends AbstractClass {
   public function test() {
       echo "ImplementedClass::test() called.\n";
   }
}

$o = new ImplementedClass;
$o->test();
?>
--------------------------------------------------------------------------------

抽象类不能被实例化。以前的不使用抽象类的老代码可以不经改动运行。
接口
Php5引入了接口。一个类可以实现多个接口。
例子:

代码:--------------------------------------------------------------------------------

<?php
interface Throwable {
   public function getMessage();
}

class MyException implements Throwable {
   public function getMessage() {
       // ...
   }
}
?>
--------------------------------------------------------------------------------

以前的不使用接口的老代码可以不经改动运行

类的型别提示
PHP5依然是弱类型的,不过在定义函数参数时,可以使用类的型别提示来声明期望传入的对象类型
Example

代码:--------------------------------------------------------------------------------

<?php
interface Foo {
   function a(Foo $foo);
}

interface Bar {
   function b(Bar $bar);
}

class FooBar implements Foo, Bar {
   function a(Foo $foo) {
       // ...
   }

   function b(Bar $bar) {
       // ...
   }
}

$a = new FooBar;
$b = new FooBar;

$a->a($b);
$a->b($b);
?>
--------------------------------------------------------------------------------

和其他强类型语言一样,php5类的型别提示在运行期间检查而非编译期间检查。即:

代码:--------------------------------------------------------------------------------

<?php
function foo(ClassName $object) {
   // ...
}
?>
和下面的代码是一样的:
<?php
function foo($object) {
   if (!($object instanceof ClassName)) {
       die("Argument 1 must be an instance of ClassName");
   }
}
?>
--------------------------------------------------------------------------------

这个语法只适用于类,不适用于内建类型。
Final

PHP 5 引入了final关键字来声明final成员和final方法。final成员和final方法不能被子类覆盖。
Example

代码:--------------------------------------------------------------------------------

<?php
class Foo {
   final function bar() {
       // ...
   }
}
?>
--------------------------------------------------------------------------------

更进一步,可以把类声明成final。将类声明成final可以阻止这个类被继承。final类里面的方法缺省地都是final的,无需再声明一次。
Example

代码:--------------------------------------------------------------------------------

<?php
final class Foo {
   // class definition
}

// the next line is impossible
// class Bork extends Foo {}
?>
--------------------------------------------------------------------------------

属性不能定义成为final.
以前的不使用final的老代码可以不经改动运行.
对象克隆
Php4没有提供一种机制来让用户自己定义复制构造子(copy constructor)控制对象的复制过程。Php4做二进制的拷贝,因而很精确地复制了对象的所有属性。
精确地复制对象的所有属性可能并不是我们一直想要的。有个例子可以很好地说明我们确实需要复制构造子:比如一个GTK Window的对象 a。 a持有它所需要的全部资源。当复制的这个GTK Window到对象b时候,我们更希望b持有新的资源对象。再举个例子:对象a包含了一个对象c, 当你把对象a 复制到对象c的时候。我们可能更希望对象b包含一个新的对象c的copy, 而不是一个对象c的引用。(译者注:这里所说的就是浅克隆和深克隆。)
对象的复制是通过clone这个关键字达到的(Clone调用被克隆对象的__clone()方法)。对象的__clone方法不能够直接被调用。

代码:--------------------------------------------------------------------------------

<?php
$copy_of_object = clone $object;
?>
--------------------------------------------------------------------------------

当developer创建对象的一份拷贝的时候,php5将会检查 __clone()方法是否存在。如果不存在,那么它就会呼叫缺省的__clone()方法,复制对象的所有属性。如果__clone()方法已经定义过,那么_clone()方法就会负责设置新对象的属性。为了方便起见,Engine会缺省地复制所有的属性。所以在__clone()方法中,只需要覆盖那些需要更改的属性就可以了。如下:
Example

代码:--------------------------------------------------------------------------------

<?php
class MyCloneable {
   static $id = 0;

   function MyCloneable() {
       $this->id = self::$id++;
   }

   function __clone() {
       $this->address = "New York";
       $this->id = self::$id++;
   }
}

$obj = new MyCloneable();

$obj->name = "Hello";
$obj->address = "Tel-Aviv";

print $obj->id . "\n";

$obj_cloned = clone $obj;

print $obj_cloned->id . "\n";
print $obj_cloned->name . "\n";
print $obj_cloned->address . "\n";
?>
--------------------------------------------------------------------------------

统一构造函数
Php5允许开发者声明一个类的构造方法。拥有构造方法的类在每次创建新的对象的时候都会呼叫这个方法,因此构造方法适合对象在被使用之前的初始化工作
Php4中,构造方法的名称和类的名称一样。考虑到从子类构造方法呼叫父类构造方法的情况是非常普遍的,而将类从一个继承体系中搬迁引起的父类变更就常常导致需要更改类的构造方法,php4的做法显然是不太合理的。
Php5引入了一个声明构建函数的标准方法: __construct().如下:
Example

代码:--------------------------------------------------------------------------------

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}

class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}

$obj = new BaseClass();
$obj = new SubClass();
?>
--------------------------------------------------------------------------------

为保持向后的兼容性,如果php5不能够找到 __construct(),它会寻找老式的构造方法,即与类同名的方法。简单的说,只有当老代码里包含了一个__construct()方法的时候,才存在一个兼容性的问题。
析构方法
对于面向对象的编程来说,可以定义析构方法是非常有用的一个功能。析构方法可以用来记录调试信息,关闭数据库连接等等一些清除收尾的工作。Php4中没有析构方法,尽管php4已经支持可以注册一个函数以便请求结束的时候被调用。
Php5引进的析构方法的概念和其他面向对象的语言(比如java)是一致的。当指向这个对象的最后一个引用被销毁的时候,析构方法被调用,调用完成后释放内存。注意:析构方法不接受任何参数。
Example

代码:--------------------------------------------------------------------------------

<?php
class MyDestructableClass {
   function __construct() {
       print "In constructor\n";
       $this->name = "MyDestructableClass";
   }

   function __destruct() {
       print "Destroying " . $this->name . "\n";
   }
}

$obj = new MyDestructableClass();
?>
--------------------------------------------------------------------------------

和构建方法一样,父类的析构方法也不会被隐含调用。子类可以在自己的析构方法通过调用parent::__destruct()来显式地调用它。
Constants
Php5引入了class级别的常量。 

代码:--------------------------------------------------------------------------------

<?php
class Foo {
   const constant = "constant";
}

echo "Foo::constant = " . Foo::constant . "\n";
?>
--------------------------------------------------------------------------------

老的没有使用const的代码仍然正常运行。
Exceptions
Php4没有异常控制。Php5引入了和其它语言(java)相似的异常控制模式。应该注意的是php5里面支持捕捉全部异常,但是不支持finally子句。
在catch语句块里面,可以重新抛出异常。也可以有多个catch语句,在这种情况下,被捕捉到的异常从上往下依次比较和catch语句比较异常,第一个类型匹配的catch语句将会被执行。如果一直搜索到底还没有发现匹配的catch子句,则寻找下一个try/catch语句。最后不能捕捉的异常将被显示出来。如果异常被捕捉,那么程序会接着catch语句块的下面开始执行。
Example

代码:--------------------------------------------------------------------------------

<?php
class MyException {
   function __construct($exception) {
       $this->exception = $exception;
   }

   function Display() {
       print "MyException: $this->exception\n";
   }
}

class MyExceptionFoo extends MyException {
   function __construct($exception) {
       $this->exception = $exception;
   }

   function Display() {
       print "MyException: $this->exception\n";
   }
}

try {
   throw new MyExceptionFoo('Hello');
}
catch (MyException $exception) {
   $exception->Display();
}
catch (Exception $exception) {
   echo $exception;
}
?>
--------------------------------------------------------------------------------

上面的例子表明可以定义一个并不继承自 Exception的异常类,但是,最好还是从Exception继承并定义自己的异常。这是因为系统内建的Exception类能够收集到很多有用的信息, 而不继承它的异常类是得不到这些信息的。下面的php代码模仿了系统内建Exception类。每个属性后面都加了注释。每个属性都有一个getter,由于这些getter方法经常被系统内部处理调用,所以这些方法被标明了final。
Example

代码:--------------------------------------------------------------------------------

<?php
class Exception {
   function __construct(string $message=NULL, int code=0) {
       if (func_num_args()) {
           $this->message = $message;
       }
       $this->code = $code;
       $this->file = __FILE__; // of throw clause
       $this->line = __LINE__; // of throw clause
       $this->trace = debug_backtrace();
       $this->string = StringFormat($this);
   }

   protected $message = 'Unknown exception';  // exception message
   protected $code = 0; // user defined exception code
   protected $file;    // source filename of exception
   protected $line;    // source line of exception

   private $trace;      // backtrace of exception
   private $string;    // internal only!!

   final function getMessage() {
       return $this->message;
   }
   final function getCode() {
       return $this->code;
   }
   final function getFile() {
       return $this->file;
   }
   final function getTrace() {
       return $this->trace;
   }
   final function getTraceAsString() {
       return self::TraceFormat($this);
   }
   function _toString() {
       return $this->string;
   }
   static private function StringFormat(Exception $exception) {
       // ... a function not available in PHP scripts
       // that returns all relevant information as a string
   }
   static private function TraceFormat(Exception $exception) {
       // ... a function not available in PHP scripts
       // that returns the backtrace as a string
   }
}
?>
--------------------------------------------------------------------------------

如果我们定义的一异常类都是继承自Exception基类
无兼容性问题。老的代码不会受到这一特性的影响。
Dereferencing objects returned from functions
Php4中不能再次引用函数返回的对象以进一步呼叫返回对象的方法,而php5是可以的。

代码:--------------------------------------------------------------------------------

<?php
class Circle {
   function draw() {
       print "Circle\n";
   }
}

class Square {
   function draw() {
       print "Square\n";
   }
}

function ShapeFactoryMethod($shape) {
   switch ($shape) {
       case "Circle":
           return new Circle();
       case "Square":
           return new Square();
   }
}

ShapeFactoryMethod("Circle")->draw();
ShapeFactoryMethod("Square")->draw();
?>
--------------------------------------------------------------------------------

静态成员变量能够被初始化。
Example

代码:--------------------------------------------------------------------------------

<?php
class foo {
   static $my_static = 5;
   public $my_prop = 'bla';
}

print foo::$my_static;
$obj = new foo;
print $obj->my_prop;
?>
--------------------------------------------------------------------------------

静态方法
PHP 5 引入了静态方法,可以在不实例化类的情况下呼叫静态方法。
Example

代码:--------------------------------------------------------------------------------

<?php
class Foo {
   public static function aStaticMethod() {
       // ...
   }
}

Foo::aStaticMethod();
?>
--------------------------------------------------------------------------------

伪变量$this不能够在静态方法方法中使用。
instanceof
Php5引入了instanceof关键字,允许用它来测试一个对象是一个类的实例,或者是一个派生类的实例,或者实现了某个接口
Example

代码:--------------------------------------------------------------------------------

<?php
class baseClass { }

$a = new baseClass;

if ($a instanceof baseClass) {
   echo "Hello World";
}
?>
--------------------------------------------------------------------------------

Static function variables
现在,静态变量在编译阶段处理。因此程序员可以通过引用为静态变量赋值。这可以改善性能,不过,不能够使用对静态变量的间接引用了。
按引用传递的函数参数现在也可以设置缺省值了。
Example

代码:--------------------------------------------------------------------------------

<?php
function my_function(&$var = null) {
   if ($var === null) {
       die("$var needs to have a value");
   }
}
?>
--------------------------------------------------------------------------------

__autoload()
__autoload() 拦截函数在一个未声明的类被初始化的时候自动调用。该类的名字会被自动传递给__autoload()函数。而__autoload()也只有这么唯一的一个参数。
Example

代码:--------------------------------------------------------------------------------

<?php
function __autoload($className) {
   include_once $className . ".php";
}

$object = new ClassName;
?>
--------------------------------------------------------------------------------

可重载的方法呼叫和属性访问
方法呼叫和属性访问都能够通过__call, __get() and __set()方法重载。
Example: __get() and __set()

代码:--------------------------------------------------------------------------------

<?php
class Setter {
   public $n;
   public $x = array("a" => 1, "b" => 2, "c" => 3);

   function __get($nm) {
       print "Getting [$nm]\n";

       if (isset($this->x[$nm])) {
           $r = $this->x[$nm];
           print "Returning: $r\n";
           return $r;
       } else {
           print "Nothing!\n";
       }
   }

   function __set($nm, $val) {
       print "Setting [$nm] to $val\n";

       if (isset($this->x[$nm])) {
           $this->x[$nm] = $val;
           print "OK!\n";
       } else {
           print "Not OK!\n";
       }
   }
}

$foo = new Setter();
$foo->n = 1;
$foo->a = 100;
$foo->a++;
$foo->z++;
var_dump($foo);
?>
--------------------------------------------------------------------------------

Example: __call()

代码:--------------------------------------------------------------------------------

<?php
class Caller {
   private $x = array(1, 2, 3);

   function __call($m, $a) {
       print "Method $m called:\n";
       var_dump($a);
       return $this->x;
   }
}

$foo = new Caller();
$a = $foo->test(1, "2", 3.4, true);
var_dump($a);
?>
--------------------------------------------------------------------------------

迭代
当和foreach一起使用对象的时候,迭代的方式被重载过了。缺省的行为是迭代类的所有属性。
Example

代码:--------------------------------------------------------------------------------

<?php
class Foo {
   public $x = 1;
   public $y = 2;
}

$obj = new Foo;

foreach ($obj as $prp_name => $prop_value) {
   // using the property
}
?>
--------------------------------------------------------------------------------

一个类的所有对象都能够被迭代浏览到, 如果这个类实现了一个空的接口:Traversable. 换句话说,实现了Traversable接口的类可以和foreach一起使用。
接口 IteratorAggregate 和Iterator允许指定类的对象在代码中如何迭代。IteratorAggregate接口有一个方法:getIterator() 必须返回一个数组
Example

代码:--------------------------------------------------------------------------------

<?php
class ObjectIterator implements Iterator {

   private $obj;
   private $num;

   function __construct($obj) {
       $this->obj = $obj;
   }
   function rewind() {
       $this->num = 0;
   }
   function valid() {
       return $this->num < $this->obj->max;
   }
   function key() {
       return $this->num;
   }
   function current() {
       switch($this->num) {
           case 0: return "1st";
           case 1: return "2nd";
           case 2: return "3rd";
           default: return $this->num."th";
       }
   }
   function next() {
       $this->num++;
   }
}

class Object implements IteratorAggregate {

   public $max = 3;

   function getIterator() {
       return new ObjectIterator($this);
   }
} 

$obj = new Object;

// this foreach ...
foreach($obj as $key => $val) {
   echo "$key = $val\n";
}

// matches the following 7 lines with the for directive.
$it = $obj->getIterator();
for($it->rewind(); $it->hasMore(); $it->next) {
   $key = $it->current();
   $val = $it->key();
   echo "$key = $val\n";
}
unset($it);
?>
--------------------------------------------------------------------------------

新的__toString方法
可以通过覆盖__toString方法来控制对象到字符串的转换。
Example

代码:---------------------------------------
VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

进度条样式

十一月 1st, 2009 No comments »

<div id=”uploadContenter” style=”padding: 3px;”>
<div style=”border: 1px solid #eeeeee; margin: 5px 2px 2px 0px; padding: 3px; display: block; font-size: 9pt; width: 406px;”>
<div style=”margin: 0px; padding: 2px 5px 2px 1px; font-size: 9pt;”>整理进度</div>
<div style=”border: 1px solid #dddddd; margin: 0px; padding: 0px; font-size: 9pt; width: 400px; height: auto; background-color: #eeeeee;”>
<div style=”padding: 1px 0px 0px 2px; font-size: 9pt; text-align: center; background-color: #aaaaaa; width: 60%; height: 13px;”></div>
</div>
</div>
</div>

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

密码保护:admin_bk

十月 29th, 2009 No comments »

这是一篇受密码保护的文章。您需要提供访问密码:


VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

web Pr = 9

九月 25th, 2009 No comments »
No. URL Site Added Page Views
1 adatum.com 22 Sep 2009 6
2 addthis.com 23 Sep 2009 3
3 adobe.com 22 Sep 2009 6
4 aljazeera.net 18 Sep 2009 21
5 alta-vista.com 19 Sep 2009 14
6 altavista.com 20 Sep 2009 21
7 amazon.com 19 Sep 2009 13
8 apache.org 19 Sep 2009 14
9 apple.com 24 Sep 2009 9
10 auswaertiges-amt.de 23 Sep 2009 5
11 bbc.co.uk 20 Sep 2009 23
12 bbc.com 19 Sep 2009 5
13 bbcpersian.com 18 Sep 2009 206
14 berkeley.edu 19 Sep 2009 14
15 bing.com 22 Sep 2009 21
16 britannica.com 21 Sep 2009 6
17 britishcouncil.org 20 Sep 2009 12
18 cbs.com 21 Sep 2009 3
19 cisco.com 20 Sep 2009 6
20 cnet.com 18 Sep 2009 10
21 com.com 19 Sep 2009 13
22 cornell.edu 23 Sep 2009 7
23 daad.de 21 Sep 2009 4
24 digital.com 18 Sep 2009 23
25 doaj.org 23 Sep 2009 4
26 encyclopedia.com 21 Sep 2009 2
27 facebook.com 20 Sep 2009 18
28 findarticles.com 20 Sep 2009 3
29 flickr.com 24 Sep 2009 4
30 geocities.com 18 Sep 2009 20
31 google.com.au 22 Sep 2009 5
32 goturkey.com 25 Sep 2009 3
33 guardian.co.uk 19 Sep 2009 4
34 harvard.edu 20 Sep 2009 10
35 hotmail.com 23 Sep 2009 5
36 hp.com 18 Sep 2009 16
37 ielts.org 19 Sep 2009 11
38 ilo.org 23 Sep 2009 1
39 imf.org 24 Sep 2009 1
40 ingenta.com 22 Sep 2009 1
41 internet2.edu 19 Sep 2009 2
42 jalbum.net 24 Sep 2009 2
43 joomla.com 25 Sep 2009 3
44 joomla.org 19 Sep 2009 8
45 jumpcut.com 25 Sep 2009 1
46 live.com 18 Sep 2009 127
47 macromedia.com 25 Sep 2009 1
48 microsoft.com 18 Sep 2009 26
49 mit.edu 21 Sep 2009 7
50 mozilla.org 18 Sep 2009 12
51 myspace.com 21 Sep 2009 4
52 mysql.com 22 Sep 2009 4
53 nature.com 20 Sep 2009 2
54 nytimes.com 20 Sep 2009 7
55 opera.com 21 Sep 2009 8
56 php.net 19 Sep 2009 15
57 plone.org 19 Sep 2009 8
58 real.com 22 Sep 2009 4
59 seedandsaplings.com 20 Sep 2009 3
60 slashdot.org 20 Sep 2009 10
61 sourceforge.net 19 Sep 2009 35
62 sun.com 20 Sep 2009 10
63 swsoft.com 23 Sep 2009 1
64 technorati.com 21 Sep 2009 5
65 timesonline.co.uk 19 Sep 2009 5
66 tv.com 21 Sep 2009 3
67 twitter.com 20 Sep 2009 15
68 un.org 21 Sep 2009 2
69 unesco.org 19 Sep 2009 8
70 upn.com 19 Sep 2009 4
71 webstandards.org 23 Sep 2009 4
72 wikipedia.org 20 Sep 2009 32
73 wired.com 19 Sep 2009 8
74 wordpress.com 18 Sep 2009 245
75 wordpress.org 20 Sep 2009 23
76 worldbank.org 20 Sep 2009 2
77 xinhuanet.com 20 Sep 2009 7
78 yahoo.com 18 Sep 2009 143
79 yale.edu 25 Sep 2009 1
80 youtube.com 19 Sep 2009 41
81 zdnet.com 18 Sep 2009 11
VN:F [1.8.4_1055]
Rating: 4.5/10 (2 votes cast)
VN:F [1.8.4_1055]
Rating: +1 (from 1 vote)

站长工具推荐

九月 25th, 2009 No comments »

A、基本类
http://top.baidu.com 百度搜索排行
http://index.baidu.com 百度指数
https://adwords.google.cn/select/KeywordToolExternal 谷歌关键词工具
http://www.google.cn/trends 谷歌搜索引擎趋势
http://sitemap.cn.yahoo.com Yahoo外部链接工具
http://siteexplorer.search.yahoo.com 网站分析(英文)
http://www.pipiki.com/ 网站价值评估 

B、拓展类
http://tool.chinaz.com/Tools/Robot.aspx 搜索蜘蛛模拟抓取
http://www2.baidu.com/inquire/price.php 百度关键词竞价查询
http://www.xml-sitemaps.com/ 网站地图在线制作
http://www.webconfs.com/similar-page-checker.php 网站相似度查询
http://tool.motoricerca.info/robots-checker.phtml robots文件在线检查工具

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: +1 (from 1 vote)

flash player list

九月 16th, 2009 No comments »

比较常用的网页播放器推荐,方便大家找到合适自己的应用。

» Read more: flash player list

VN:F [1.8.4_1055]
Rating: 5.0/10 (1 vote cast)
VN:F [1.8.4_1055]
Rating: +1 (from 1 vote)

PHP输出压缩页面(gzip)

九月 2nd, 2009 No comments »

需要压缩的页面:

require_once('gzipFunc.php');
ob_start('ob_gzip'); // 放在 php 文件的顶部
//中间是 html 输出...
ob_end_flush(); // 放在 php 文件的底部。输出压缩内容

‘gzipFunc.php’的内容:

function ob_gzip($content){
if( !headers_sent();
extension_loaded("zlib");
strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))
{
$content = gzencode($content,9); // 9 是最大压缩级别,0是最小不压缩
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
return $content;
}

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)