Arrive Hangzhou
应朋友之邀给一家航空杂志社《Arrive Hangzhou》做的官方网站,从设计到编码均为在下完成 – 。 – (虽然在对方boss要求下修改不少),采用WordPress实现。
应朋友之邀给一家航空杂志社《Arrive Hangzhou》做的官方网站,从设计到编码均为在下完成 – 。 – (虽然在对方boss要求下修改不少),采用WordPress实现。
朋友拜托改的一段PHP小代码,其实就是Google MAP API FAQ里面提到的例子稍作修改,原文例子还用到了MySQL作为存储因此扯了一堆MySQL和PHPMyAdmin,只是想简单查下的就显得没必要了。
于是今天写了一个Javascript版本的:http://vifix.cn/atelier/address_to_coordinates/
,代码都在HTML里面了,感兴趣可以右键查看源码。
下面是PHP版本的代码:
Read the rest of this entry >>
嘛,受朋友所托写的,不是什么大不了的东西,贴上来就当给初学者参考吧
只有计数功能,利用session防止重复计数
注意只能运行在PHP5+上
代码见页内:
觉得先前的首页在载入效率上很有问题,于是干脆一鼓作气重新做了一个,总共消耗大概16个小时。并且加入了一些细节和效果和内容(主要是一些个人的作品)。嘛,今年过后也得找工作了,就当广告先做起来吧~
眼下似乎还有一些问题,慢慢进行调整了。
滚动和音效分别使用了这两个jQuery插件:jQuery.jScrollPane, jQuery.flashSound
PS: 搞这个东西时项目目录命名为vifix9(因为是09年),真有改成⑨的冲动……
PHP5中有一个很方便的__autoload的魔术函数,PHP Manual中的示例如下:
function __autoload($class_name) { require_once $class_name . '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2();
算是很方便的一个函数,然而有一个缺陷就是没有名称空间,大量的class不得不放在一个目录下面,才可以用这个自动加载php的魔术函数,如果class文件要放在不同的目录里面,这个自动载入就无能为力了。为了解决这个问题,自己写了一个loadClass函数实现类似功能,代码如下:
function loadClass($tgt){ $class = substr($tgt, strrpos($tgt, '.')+1); require_once(DIR_APP.str_replace('.','/',$tgt).'.php'); return new $class(); } $test = loadClass("model.test"); $test->myfunc();
DIR_APP/model/test.php:
class test{ function myfunc(){ echo "hello, world!~"; } }
如此一来,就可以方便的加载在不同的目录里面的(缺点就是要打完整的”名称空间”),并且应该在PHP4中也可以使用(虽然PHP5已经是大流)……
就此自动载入的问题咨询了一下某飞,给了两个采用spl_autoload的自动载入的实现(by flying~):
function loader($className) { $classPath = str_replace('_', DIRECTORY_SEPARATOR, $className); require $classPath . '.php'; } spl_autoload_register('loader'); $user = new Model_User(); // load (inlcude paths):/Model/User.php
class的名称定义遵循PEAR标准用下划线_进行分隔
更加复杂点的支持多路径的”豪华版”(by flying~):
Read the rest of this entry >>
花了些时间整合了Blog的一些标签和tag,看上去应该干净了不少。
同时修改了一下主题,加大宽度。虽然很喜欢现在用的主题,但是却已经很古老了,里面用的一些WordPress内部函数都已经不被推荐继续采用,因此也都改为新的函数。顺便在侧栏也加上了Tag Cloud。
然后加上了一个Sitemap页面,里面是全站链接。
Sitemap的做成记录:
这两天写一个页面需要访问一个RSS并且读取rss内的的文章标题和文章的链接,就尝试了一下PHP5的新特性也就是这个SimpleXML,直接支持xpath获取,确实很方便啊 :
$file = file_get_contents("__YOUR__RSS__URL__HERE__"); $xml = new SimpleXMLElement($file); $titles = $xml -> xpath("/rss/channel/item/title"); $links = $xml -> xpath("/rss/channel/item/link");
然后就对$titles和$links这两个数组进行操作即可。
jetty是一个开源的java web服务器,适合用来架设小型的java web环境,其官方网站:http://www.mortbay.org/jetty/
quercus是一个PHP的纯java实现(目前quercus 3.1.6对应的php版本为5.2.0 —— 来自于在quercus中运行的phpinfo(); ),是一个servlet,可以在JEE应用服务器中运行PHP的应用,其官方网站为:http://quercus.caucho.com/
它已经被包含在另外一个Java EE应用服务器 – resin的3.0.17版本之后中,如果直接采用resin,也可以直接获得运行PHP应用的支持
最近在某飞的建议下,有考虑在VPS上面将JavaEE应用服务器和跑PHP的服务器合并成为一个,于是把自己的ubuntu 8.04当作沙箱,安装了jetty + quercus的环境,大致配置步骤如下:
Read the rest of this entry >>
PHP中并没有明确的Application(或者与此类似)的概念,因此文件分类如果较多又有许多代码共用,在不使用框架的情况下,就比较难以组织,不得不说这是PHP的一个缺陷。最近在项目中就碰到了这个问题。有前台的页面和后台的页面,后台页面放在admin目录。前后台都有一定量的公用的代码,并且其中也包含了可以复用的函数,比如说输出出错信息,验证登录等等等的。我最初的方法是折中的在应用的根目录下面放一个includes目录,然后再在admin里面也放置一个同样的includes,两边的内容基本上是大同小异的。可以说实在谈不上优雅的解决方案。
后来想到了wordpress也是类似的结构,稍微看了一下代码,发现它有一个全局的wp-config.php文件,里面有如下行:
define('ABSPATH', dirname(__FILE__).'/'); require_once(ABSPATH.'wp-settings.php');
查了一下手册,发现__FILE__是PHP提供的一个魔术常量,永远返回PHP解析到它时的文件的绝对路径(似乎从这个角度来看应该是变量?),利用它可以很好的定位项目的绝对路径,也为进一步的项目中的其它目录提供一个基准,例如我目前的config.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php /* * 配置文件 */ //常量PATH_INC - /includes绝对路径 define("PATH_INC", dirname(__FILE__) . '/'); //常量PATH_APP - /路径 define("PATH_APP", PATH_INC . "../"); //常量PATH_LIB - /lib路径 define("PATH_LIB", PATH_INC . "../lib"); //常量PATH_ADMIN - /admin路径 define("PATH_ADMIN", PATH_INC . "../admin"); //数据库设置 define("DB_HOST", "YOUR_DATABASE_HOST"); define("DB_USER", "YOUR_DATABASE_USER"); define("DB_PASSWORD", "YOUR_DATABASE_PASSWORD"); define("DB_DBNAME", "YOUR_DATABASE_NAME"); ?> |
如此一来只要在任何这个项目的php文件中用相对路径包含这个config.php,再用如下方法include所需要的文件即可:
//载入配置文件 require_once 'includes/config.php'; //建立数据库连接 require_once PATH_INC . "conn.php";