October 29, 2008
7.6. 分发器 第 7 章 Zend_Controller
"\u003ch2 id=\"76分发器\"\u003e7.6. 分发器\u003c/h2\u003e\n\u003ch3 id=\"761概述\"\u003e7.6.1. 概述\u003c/h3\u003e\n\u003cp\u003e分发是取得请求对象,提取其中的模块名,控制器名,动作名以及可选参数,然后实例化控制器并调用其中的动作的整过过程。如果其中的模块、控制器或者动作没能找到,将使用它们的默认值。 \u003ccode\u003eZend_Controller_Dispatcher_Standard\u003c/code\u003e 指定每个控制器和动作的默认值为 \u003ccode\u003eindex\u003c/code\u003e,模块的默认值为 \u003ccode\u003edefault\u003c/code\u003e,允许开发人通过 \u003ccode\u003esetDefaultController()\u003c/code\u003e、 \u003ccode\u003esetDefaultAction()\u003c/code\u003e 和 \u003ccode\u003esetDefaultModule()\u003c/code\u003e 改变默认值设定。\u003c/p\u003e\n\u003cp\u003e缺省模块\u003c/p\u003e\n\u003cp\u003e当创建模块程序,你可能也需要缺省模块的命名空间(缺省配置中,缺省模块_没有_命名空间)。从 1.5.0 开始,可以在前端控制器或你的派遣器里通过指定 \u003ccode\u003eprefixDefaultModule\u003c/code\u003e 为 true 来实现。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\n// In your front controller:\n$front-\u0026gt;setParam(\u0026#39;prefixDefaultModule\u0026#39;, true);\n\n// In your dispatcher: …\u003c/code\u003e\u003c/pre\u003e"
October 29, 2008
7.11. 使用传统的模块目录结构 第 7 章 Zend_Controller
"\u003ch2 id=\"711使用传统的模块目录结构\"\u003e7.11. 使用传统的模块目录结构\u003c/h2\u003e\n\u003ch3 id=\"7111简介\"\u003e7.11.1. 简介\u003c/h3\u003e\n\u003cp\u003e传统的模块目录结构允许你把不同的MVC应用程序分离成为独立的单元,并和不同的前端控制器配合再使用。示例一下这样的目录结构:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003edocroot/\n index.php\napplication/\n default/\n controllers/\n IndexController.php\n FooController.php\n models/\n views/\n scripts/\n index/\n foo/\n helpers/\n filters/\n blog/\n controllers/\n IndexController.php\n models/\n views/\n scripts/\n index/ …\u003c/code\u003e\u003c/pre\u003e"
October 26, 2008
php构造函数和析构函数
"\u003cp\u003e构造函数\nvoid __construct ([ mixed $args [, $… ]] )\nPHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。\u003c/p\u003e\n\u003cp\u003eNote: 如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。\u003c/p\u003e\n\u003cp\u003eExample#1 使用新标准的构造函数\u003c/p\u003e\n\u003cp\u003eclass BaseClass {\u003c/p\u003e\n\u003cp\u003efunction __construct() {\nprint “In BaseClass constructor\\n”;\n}\n}\u003c/p\u003e\n\u003cp\u003eclass SubClass extends BaseClass {\nfunction __construct() {\nparent::__construct();\nprint “In SubClass constructor\\n”;\n}\n}\u003c/p\u003e\n\u003cp\u003e$obj = new BaseClass();\n$obj = new SubClass();\n?\u0026gt;\n为了实现向后兼容性, …\u003c/p\u003e"
October 26, 2008
php范围解析操作符(::)
"\u003cp\u003e范围解析操作符(::)\n范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员、方法和常量,还可以用于覆盖类中的成员和方法。\u003c/p\u003e\n\u003cp\u003e当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。\u003c/p\u003e\n\u003cp\u003e把 Paamayim Nekudotayim 选作该操作符的名字似乎有些奇怪。然而,这是 Zend 开发小组在写 Zend Engine 0.5 (被用于 PHP 3 中)时所作出的决定。事实上这个词在希伯莱文就是双冒号的意思。\u003c/p\u003e\n\u003cp\u003eExample#1 在类的外部使用 :: 操作符\u003c/p\u003e\n\u003cp\u003eself 和 parent 这两个特殊的关键字是用于在类的内部对成员或方法进行访问的。\u003c/p\u003e\n\u003cp\u003eExample#2 :: from inside the class definition\u003c/p\u003e\n\u003cp\u003e当一个子类覆盖其父类中的方法时,PHP 不会再执行父类中已被覆盖的方法,直到子类中调用这些方法为止。这种机制也作用于 构造函数和析构函数、重载 及 魔术 函数。\u003c/p\u003e\n\u003cp\u003eExample#3 调用父类的方法\u003c/p\u003e\n\u003cp\u003emyFunc();\u003c/p\u003e\n\u003cp\u003e?\u0026gt;\u003c/p\u003e\n\u003cp\u003eStatic Keyword …\u003c/p\u003e"
October 26, 2008
php中访问控制
"\u003cp\u003e访问控制\n对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。\u003c/p\u003e\n\u003cp\u003e对类成员的访问控制\n类成员都必须使用关键字public、protected 或 private 进行定义\u003c/p\u003e\n\u003cp\u003eExample#1 声明类成员\u003c/p\u003e\n\u003cp\u003epublic;\u003c/p\u003e\n\u003cp\u003eecho $this-\u0026gt;protected;\necho $this-\u0026gt;private;\n}\n}\u003c/p\u003e\n\u003cp\u003e$obj = new MyClass();\necho $obj-\u0026gt;public; // 这行能被正常执行\necho $obj-\u0026gt;protected; // 这行会产生一个致命错误\necho $obj-\u0026gt;private; // 这行也会产生一个致命错误\n$obj-\u0026gt;printHello(); // 输出 Public、Protected 和 Private\u003c/p\u003e\n\u003cp\u003e/** …\u003c/p\u003e"
October 22, 2008
PHP V5.2 中的新增功能,第 5 部分: 跟踪文件上传进度
"\u003cp\u003e级别: 中级\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://haohtml.com/wp/wp-admin/#author\"\u003eTracy Peterson\u003c/a\u003e (\u003ca href=\"mailto:tracy@tracypeterson.com?subject=%E8%B7%9F%E8%B8%AA%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E8%BF%9B%E5%BA%A6\u0026amp;cc=dwxed@us.ibm.com\"\u003etracy@tracypeterson.com\u003c/a\u003e), 自由撰稿人, Consultant\u003c/p\u003e\n\u003cp\u003e2007 年 6 月 08 日\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ePHP V5.2 为开发人员添加了 hook 以利用实时跟踪文件上传进度的功能。本文是 “\u003ca href=\"http://www.ibm.com/developerworks/cn/opensource/os-php-v52/\"\u003ePHP V5.2 中的新增功能\u003c/a\u003e” 系列文章(共五部分)的第 5 部分,将向您展示如何监视文件上传并相应地编写代码,以及如何创建 PHP 进度条。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e Web 2.0 是 Internet 上最炙手可热的时髦字眼,投资者纷纷把资金投入到涉及这项技术的投资项目中。数以百万计的 Web 站点和应用程序覆盖的描述性术语有很多。使用 Web 2.0,我们将描述一类 Web 站点,这些站点都提供了了解 Internet 上数以百万计用户心声的途径。与众不同之处在于它们全都为用户提供了交流和分享与共同利益相关的观点和数据的场所,这些站点可以快速生成大量内容。\u003c/p\u003e\n\u003cp\u003e 每个用户都将提供某种内容 —— 评论咖啡店、上班路线等。\u003ca href=\"http://www.youtube.com/\"\u003eYouTube\u003c/a\u003e 在这点上是一个优秀示例,为人们提供一个空间可以上传视频并使其他用户可以观看这些视频并提供反 …\u003c/p\u003e"
October 22, 2008
MVC模式的PHP实现
"\u003cp\u003e作者:Harry Fuecks 翻译:Easy Chen\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eMVC模式在网站架构中十分常见。它允许我们建立一个三层结构的应用程式,从代码中分离出有用的层,帮助设计师和开发者协同工作以及提高我们维护和扩展既有程式的能力。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e视图(View)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e“视图”主要指我们送到Web浏览器的最终结果??比如我们的脚本生成的HTML。当说到视图时,很多人想到的是模版,但是把模板方案叫做视图的正确性是值得怀疑的。\u003c/p\u003e\n\u003cp\u003e对视图来说,最重要的事情可能是它应该是“自我意识(self aware)”的,视图被渲染(render)时,视图的元素能意识到自己在更大框架中的角色。\u003c/p\u003e\n\u003cp\u003e以XML为例,可以说XML在被解析时,DOM API有着这样的认知??一个DOM树里的节点知道它在哪里和它包含了什么。 (当一个XML文档中的节点用SAX解析时只有当解析到该节点时它才有意义。)\u003c/p\u003e\n\u003cp\u003e绝大多数模板方案使用简单的过程语言和这样的模板标签:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;p\u0026gt;{some_text}\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;{some_more_text}\u0026lt;/p\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e它们在文档中没有意义,它们代表的意义只是PHP将用其他的东西来替换 …\u003c/p\u003e"
October 15, 2008
PHP 危险函数解释
"\u003cp\u003e*** 在编译 PHP 时,如无特殊需要,一定禁止编译生成 CLI 命令行模式的 PHP 解析支持。\n可在编译时使用 –disable-cli。一旦编译生成 CLI 模式的 PHP,则可能会被入侵者\n利用该程序建立一个 WEBShell 后门进程或通过 PHP 执行任意代码!\u003c/p\u003e\n\u003cp\u003ephpinfo()\n功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。\n危险等级:中\u003c/p\u003e\n\u003cp\u003epassthru()\n功能描述:允许执行一个外部程序并回显输出,类似于 exec()。\n危险等级:高\u003c/p\u003e\n\u003cp\u003eexec()\n功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。\n危险等级:高\u003c/p\u003e\n\u003cp\u003esystem()\n功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。\n危险等级:高\u003c/p\u003e\n\u003cp\u003echroot()\n功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式\nPHP 时才能工作,且该函数不适用于 Windows” onclick=”tagshow(event)” class=”t_tag”\u0026gt;Windows 系统。\n危险等级:高\u003c/p\u003e\n\u003cp\u003escandir()\n功能描 …\u003c/p\u003e"
October 15, 2008
Mysql基础优化第一讲
"\u003cp\u003e\u003cstrong\u003eMysql基础优化第一讲\u003c/strong\u003e 讲师:陈书艺\u003c/p\u003e\n\u003cp\u003e参数的调整可以通过修改 /etc/my.cnf 文件并重启 MySQL 实现。这是一个比较谨慎的工作,上面的结果也仅仅是我的一些看法,你可以根据你自己主机的硬件情况(特别是内存大小)进一步修改。\u003c/p\u003e\n\u003cp\u003e同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。\u003c/p\u003e\n\u003cp\u003e安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql目录中,配制文件有几个,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。\u003c/p\u003e\n\u003cp\u003e一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要;一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了,使用mysqladmin variables …\u003c/p\u003e"
October 15, 2008
mysql忘记root密码的解决方法
"\u003cp\u003e一. MySQL密码的恢复方法之一\n如果忘记了MySQL的root密码,可以用以下方法重新设置:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eKILL掉系统里的MySQL进程;\nkillall -TERM mysqld\u003c/li\u003e\n\u003cli\u003e用以下命令启动MySQL,以不检查权限的方式启动;\nsafe_mysqld –skip-grant-tables \u0026amp;\u003c/li\u003e\n\u003cli\u003e然后用空密码方式使用root用户登录 MySQL;\nmysql -u root\u003c/li\u003e\n\u003cli\u003e修改root用户的密码;\nmysql\u0026gt; update mysql.user set password=PASSWORD(‘新密码’) where User=’root’;\nmysql\u0026gt; flush privileges;\nmysql\u0026gt; quit\n重新启动MySQL,就可以使用新密码登录了。\n二. MySQL密码的恢复方法二\n有可能你的系统没有 safe_mysqld 程序(比如我现在用的 ubuntu操作系统, apt-get安装的mysql) , 下面方法可以恢复\u003c/li\u003e\n\u003cli\u003e停止mysqld;\n /etc/init.d/mysql stop\n(您可能有其它的方法,总之停止mysqld的运行就可以 …\u003c/li\u003e\u003c/ol\u003e"
October 15, 2008
Linux必学的60个命令
"\u003cp\u003eLinux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。\u003c/p\u003e\n\u003cp\u003e◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;\n◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;\n◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;\n◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 …\u003c/p\u003e"
October 6, 2008
[精典] FreeBSD下安装MySQL+Apache+PHP新手指南
"\u003cp\u003e作者: heiyeluren\nQQ群: 5415735 (Linux/BSD安装维护群)\n日期: 2004/8/18\n— 特别感谢QQ群好友阿南,本文在他的耐心指导下才产生 —\u003c/p\u003e\n\u003cp\u003e看到朋友们在Unix/Linux上装mysql有点麻烦,我也好不容易装完了,所以就来讲件,也许能帮帮大家的忙. 我使用的操作系统是FreeBSD5.2.1,如果别的操作系统安装方法也许不一样,请酌情处理.\n安装FreeBSD就不讲了,只要稍微定制一下就可以了,过程我就不说了,我用的FreeBSD版本是5.2.1,应该是现在比较新的版本,以后就不知道了 🙂 .\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一. 安装MySQL\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e我使用的的Mysql是4.0.20,源代码版,你也可以使用RPM包或者二进制版,安装方法可能不一样,请参考其它文章.\n先下载Mysql2.0.20的源代码版,地址: \u003ca href=\"http://dev.mysql.com/downloads/mysql/4.0.html\"\u003ehttp://dev.mysql.com/downloads/mysql/4.0.html\u003c/a\u003e\n把它下到/usr/local/src目录下,如果没有该目录,就自己建一个.下载回来的包名字叫 mysql-4.0.20.tar.gz,然后我们把它解压出来:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e# tar -zxvf …\u003c/strong\u003e\u003c/p\u003e"
October 2, 2008
[精典教程]freebsd下安装mysql,apache,php,phpmyadmin记录
"\u003cp\u003e第一次在FREEBSD下配置环境,感觉好爽,安装的时候也参考了别人的介绍,在此表示感谢。\u003c/p\u003e\n\u003cp\u003e为了方便以后的操作,现在记录写下来。\u003c/p\u003e\n\u003cp\u003e**安装MYSQL时要注意:\n** mysql默认数据库放在/var分区里,如果你的数据库很大,那么你需要在前面分区的时候把/var分区分到足够大,\n如果你想改变它的安装目录,例如安装到:/usr/db.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e#cd /usr/ports/databases/mysql51-server\n\u003c/strong\u003e \u003cstrong\u003e#make WITH_CHARSET=utf8\u003c/strong\u003e \u003cstrong\u003eWITH_XCHARSET=all\u003c/strong\u003e \u003cstrong\u003eWITH_PROC_SCOPE_PTH=yes SKIP_DNS_CHECK=yes BUILD_OPTIMIZED=yes install clean\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e#cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf\u003c/strong\u003e\n\u003cstrong\u003e#/usr/local/bin/mysql_install_db\n#chown -R mysql:mysql /var/db/mysql\n#/usr/local/bin/mysqld_safe \u0026amp; //启动mysql …\u003c/strong\u003e\u003c/p\u003e\u003c/blockquote\u003e"
October 2, 2008
Freebsd7.0下安装APACHP22服务器
"\u003cp\u003e(1)最小化安装FREEBSD7.0-RELEASE\n(2)安装APACHE22\nb2sun.com#cd /usr/ports/www\n这个目录下会有apache22这个目录.安装它就OK了.\nb2sun.com#setenv PACKAGESITE \u003ca href=\"ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/i386/packages-7.0-release/Latest/\"\u003eftp://ftp.freebsdchina.org/pub/FreeBSD/ports/i386/packages-7.0-release/Latest/\u003c/a\u003e\n\u003cstrong\u003eb2sun.con#pkg_add -f -r apache22\u003c/strong\u003e\n这时系统会自动下载文件并安装\n\u003cstrong\u003eapache22_enable=”YES”\u003c/strong\u003e 这行加入/etc/rc.conf中.系统会自动启动这个服务.\n安装完成后您需要在/usr/local/www/apache22下面建立一个data的目录及一个index.html文件.这样就可正常启动apache22 并在其它客户端中访问您建立的服务器.\n**(b2sun.com#apachectl start(stop restart))**这个非常关键.\n最好 安装完后重新启动您的FreeBSD7操作系统.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFAMP架构的建立\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eLAMP架构 …\u003c/p\u003e"
September 27, 2008
js中arguments.length的意思
"\u003cp\u003efunction imagePreload() {\nvar imgPreload = new Image();\nfor (i = 0; i \u0026lt; arguments.length; i++) {\nimgPreload.src = arguments[i];\n}\n}\n\u003cstrong\u003eimagePreload(‘001.gif’, ‘002.gif’, ‘003.gif’, ‘004.gif’, ‘005.gif’)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这个是js中的arguments.主要是可以对输入的参数进行跟踪。\n这如作者所举出的例子:imagePreload函数出入了5个参数,所以在js代码中的\narguments.length会知道你输入的了5个参数。并可以通过索引器获得五个参数的值。\u003c/p\u003e"