【转】创建自己的PEAR频道

最近用PEAR比较多,看到HaoHappy一篇构建自己的PEAR频道不错,记在这里了。
 
 
 
PEAR(PHP扩展与应用库,PHP Extension and Application Repository)的强大在此不再啰嗦。因其和 PHP绑定发布,而且有强大的软件包依赖关系管理机制,而且非常便于安装和升级其中的类库,深受PHP程序员所喜爱。
 
PEAR1.4之前,我们下载和升级 PEAR包的唯一来源是PEAR官方网站。但现在我们有了新的选择――我们可以创建自己的PEAR频道,并用于管理自己的类库,只要遵循PEAR的规则。所有PHP程序员都可以自由、方便地使用你的类库。例如通过pear installyourchannel/package这样简单的命令使用你的类库,是不是很酷?
 
在此介绍如何创建自己的PEAR频道:
 
在创建频道之前,需要先做些系统管理的工作。
 
你要创建一个 MySQL数据库和相应的用户。数据库用户要有在新的数据库中创建、删除和修改表的权限。如创建一个名为pear的数据库,相应创建一个pear用户。
 
接着要对 Web服务器进行配置,使之支持你的频道对应的域名(本例中使用pear.example.com)。最理想的情况下,你能够把这个域名指向一个独立的目录。频道相关的脚本将被安装到该目录下。
例如:二级域名设置为 pear.phpeye.com,指向/websites/pear目录。
在 apache的httpd.conf中这样设置:
 
#pear.phpeye.com
 

<VirtualHost 1.2.3.4:80> #写你的服务器IP

        ServerName pear.phpeye.com
        ServerAdmin haohappy@gmail.com
        DocumentRoot /home/web_happy/pear
</VirtualHost>
 
二级域名到服务器 IP的指向需要你另外在域名解析面板里添加。
 

$ pear channel-discover pear.chiaraquartet.net

$ pear install chiara/Chiara_PEAR_Server-0.18.7

$ pear run-scripts chiara/Chiara_PEAR_Server
 
这里有一个 bug,似乎pear一直没有解决。我在win和linux都尝试过后才怀疑是个bug。。搜索之后发现果然如些。可能会产生如下信息:
 

Copying DB_DataObject config file to "C:php5peardataChiara_PEAR_ServerdataDBDataObjectpear.ini"

updating database to add deprecated package support

Table 'pear.packages' doesn't exist

Updating database failed
Install scripts complete
 
如果遇到这个 bug,可以手动导入SQL(你可以先找一下pearserver.sql的实际位置):

/www/mysql/bin/mysql pear -uroot -ppwd < /www/php/lib/php/data/Chiara_PEAR_Server/data/pearserver.sql

 
然后再次执行:
$ pear run-scripts chiara/Chiara_PEAR_Server         
 
填入一系列配置信息后,

1-6, 'all', 'abort', or Enter to continue: 6

Channel Name (server uri like pear.php.net) [] : pear.phpeye.com

 1. Mysql database                                       : pear

 2. Mysql Username (must have create permision)         : pear

 3. Mysql password                                       : 123456

 4. Database Host                                       : localhost

 5. Channel Administrator Handle (package.xml user tag) : haohappy

 6. Channel Name (server uri like pear.php.net)         : pear.phpeye.com

 

Copying DB_DataObject config file to

"/www/php/lib/php/data/Chiara_PEAR_Server/data/DBDataObject/pear.ini"
database is already upgraded
 
 1-2, 'all', 'abort', or Enter to continue:
 1. Suggested Channel Alias : pear
 2. Channel summary          : haohappy's pear channel    
 
 

1-3, 'all', 'abort', or Enter to continue:

 1. Channel Administrator Real Name : Hao Chen
 2. Channel Administrator Email      : haohappy@gmail.com
 3. Channel Administrator Password : 123456
 

1-6, 'all', 'abort', or Enter to continue: 4

temporary path to save uploaded releases in [] : /websites/pear/upload

 1. PEAR Configuration File Location                                 : /root/.pearrc

 2. Path to document root of web server for pear.phpeye.com         : /websites/pear

 3. name of frontend.php HTML admin frontend file                   : frontend.php

 4. temporary path to save uploaded releases in                     : /websites/pear/upload

 5. port clients should connect to (443 is SSL, 80 is regular HTTP) : 80

 6. protocol clients should use to connect (http or https)          : http

 

执行结果:

adding channel to local registry

Successfully created /websites/pear/frontend.php

Successfully created /websites/pear/pear_server.css

Enabling REST for channel pear.phpeye.com

Adding REST 1.0 and REST 1.1 to channel.xml

Saving Categories REST

 Category Default

Saving All Maintainers REST

Saving Maintainer REST

Maintainer haohappy

Saving Package REST

Saving Category Package REST

 Default

Install scripts complete                            

 
现在你可以通过

来管理你的PEAR频道。你可以创建类库的分类,创建类库,上传一个打包好的发布版本等等。

 

 

其他PHP程序员如何使用你的频道中的PEAR包呢?

 

首先要获取你的频道信息:

$ pear channel-discover pear.phpeye.com

这时,pear.phpeye.com这个频道就添加到你的本地了,你就可以直接安装该频道上的类库了。
 
假设该频道中有一个名为HappyBear的类库,那么你可以用以下命令安装:

$ pear install HappyBear

 
就和安装PEAR官方网站上的类库一模一样。
 

至于如何制作一个合乎规范的PEAR包,Haohappy下次另外撰文介绍。

创建动态菜单,你需要做以下几个步骤: 1.在数据库创建菜单表,包括菜单名称、菜单链接、父级菜单ID等字段。 2.在后台管理系统中创建一个页面,用于管理菜单的增删改查操作。 3.使用Layui的Tree组件来展示菜单,同时通过Ajax请求获取动态数据,并将菜单数据换为树形结构。 4.在页面加载时,通过Ajax请求获取菜单数据,并通过Layui的菜单组件来展示菜单。 5.为菜单项绑定点击事件,在点击菜单项时,通过Ajax请求获取对应的页面内容,并将内容展示在页面中。 下面是一个简单的示例代码,供参考: HTML代码: ``` <div class="layui-collapse"> <ul class="layui-nav layui-nav-tree layui-nav-side" lay-filter="test"> <li class="layui-nav-item layui-nav-itemed"> <a href="javascript:;">菜单</a> <dl class="layui-nav-child"> <dd><a href="javascript:;">动态菜单</a></dd> </dl> </li> </ul> </div> ``` JavaScript代码: ``` layui.use(['element', 'jquery'], function(){ var element = layui.element; var $ = layui.jquery; // 菜单项点击事件 $('ul.layui-nav-child').on('click', 'dd', function(){ var url = $(this).attr('href'); // Ajax请求获取对应的页面内容,并将内容展示在页面中 $.get(url, function(data){ $('#content').html(data); }); return false; }); // 动态加载菜单 $.get('/menu/list', function(data){ var menuData = []; // 将菜单数据换为树形结构 for(var i = 0; i < data.length; i++){ var menu = { title: data[i].name, href: data[i].url }; if(data[i].parentId == 0){ menuData.push(menu); }else{ for(var j = 0; j < menuData.length; j++){ if(menuData[j].id == data[i].parentId){ if(!menuData[j].children){ menuData[j].children = []; } menuData[j].children.push(menu); } } } } // 使用Layui的Tree组件来展示菜单 element.render('nav', 'test', menuData); }); }); ``` 在这个示例中,我们使用了Layui的Collapse、Nav和Tree组件来实现动态菜单的创建。其中,Collapse用来创建左侧导航栏,Nav用来创建顶部菜单栏,Tree用来创建动态菜单。同时,我们还使用了Ajax来获取动态数据,并将菜单数据换为树形结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值