第 1 部分

上周非常紧张,因为我有我们的毕业项目演讲、答辩和演示 (http://fyp.theebgar.net)。我收到了谷歌的欢迎包,里面有一个红色的小笔记本和一张装有 505 美元的预付借记卡。我还把我的计划部分移植到 Joomla! 的上下文中,研究了现有 Joomla! 1.6 库的格式,并采用了 JUser 来实现分类 API 的树类。预计在一周内完成 API 的实现。

第 2 部分

在 5 月 28 日,我与一位导师在 GTalk 上进行了非正式的聊天。讨论了以下内容

1. GPL 许可证和借鉴样式与模式

"我:1. 我采用了 Joomla 库中 TUser 类的代码。我可以给出归属,并且它是 GPL 许可的。这样会有问题吗?

8:38 PM 我这样做是因为它来自 Joomla! 1.6 并且由核心开发者编写,所以我可以用相同的风格
8:39 PM Luis:你说的给出归属是指什么.. 是指说明这是由 Joomla 核心团队开发而不是你?
 我:不是,是指风格和代码的部分是从这个类借鉴的
8:40 PM Luis:啊.. 我明白了.. 这样很好"
2. 表格子类的位置
  我:JUser 使用一个子类来处理表格操作 JTableUser,它位于中央位置 /libraries/joomla/database/tables
  但我决定将其保留在我的库中
 
3. JTree 的位置
我:是的,它是放在库中的 joomla 目录下
  哦,我在结构中犯了一个错误
  这是我提交的
  :(
 Luis:除非你打算将其包含在 Joomla 框架的核心中
10:14 PM 我:嗯,这个想法是对的?
 Luis:我不确定安装程序何时会定位到第三方库
  我认为是在 libraries/ 文件夹下
  而不是 libraries/joomla/ 内
  when = where
 我:啊,好的,那就没事了
  让我们保持当前的这种方式
10:15 PM jimport('taxonomy.tree');
 
4. 从 JClass 继承
路易斯:嗯,JClass 在 1.5 版本中不存在
  它是 1.6 版本的添加
 我:嗯
  抱歉如果我遗漏了任何 Joomla 模式
  :(
  我检查了一些其他的库类
  比如文件系统,
9:03 PM 然后我决定使用
 路易斯:嗯,他们决定在特定情况下从 JClass 继承肯定有充分的理由
  但 JObject 包含了很多功能,值得继承
 我:但在操作中 JTaxTree 与 JUser 相当
9:05 PM 你认为我应该使用 JObject 吗
  ?
9:06 PM 路易斯:我认为是的,但我需要确定一下.... 给我五分钟... 对 JTaxTree 没有异议
 我:当然没问题
9:07 PM 实际上我想确认一下我将 JTableTaxTree 放在的地方是否正确
9:14 PM 我:嗯,你怎么看
  ?
9:18 PM 路易斯:回来... JClass 定义了一个受保护的构造函数,而 JObject 没有
 我:哇,那它是最适合的
 路易斯:所以它适用于单例模式
9:19 PM 问题是,这个类将会以单例模式使用吗?
 我:嗯,我从它的使用中猜测到了
  是的,它会
 路易斯:我明白了...在这种情况下,从 JClass 继承没有问题

5. 还讨论了 JLeaf 的实现(但决定采用特定的设计,稍后再评估其优点)

 

JTree 有两个目的
9:28 PM 1. 作为 jos_taxonomy_trees 和 jos_taxonomy_tree_maps 表的代表
  2. 提供控制功能
9:31 PM 路易斯:我可以看到你通过方法实现了表的表示... 控制功能缺失,因为 JLeaf 和 Term 还没有实现...
  好的,我想这已经完全清楚了... 所以你的问题是关于 JLeaf 和 JTerm 应该使用什么方法,对吗?这是你的问题吗?
9:32 PM 我:是的,我的意思是 JTree 有方法和参数
  但我想为 JLeaf 保持它们分开
  没有 JTerm(我用错了)
 路易斯:所以不需要在 JLeaf 中实现 save、bind 和那些东西
 我:是的
 路易斯:对吗?
 我:没错
9:33 PM 路易斯:好的... 我明白了
 我:它们将通过控制功能提供
  tehy 将通过控制功能提供
  但我们可以直接从数据库查询中将 JLeaf 作为 loadObject 加载
  我考虑这一点是因为它将被广泛调用
9:34 PM 如果它变得庞大,内存分配将是显著的
 路易斯:嗯... 描述你如何使用 JLeaf 和 loadObject... 一个代码示例
9:35 PM 我:好的,JLeaf 将有像 getLeaves 这样的方法
9:36 PM 这个方法将返回
 路易斯:它的子项列表
  ??
9:37 PM 我:$query = "SELECT * FROM #__taxonomy_leaves WHERE tid = $tid'';
$db =& JFactory::getDBO();
$db->setQuery($query);
return $db->loadObjectList();
  是的,类似于这样
  直接
  所以 JLeaf 不会有变量集
  它们立即从函数返回
  从函数中返回
 路易斯:啊... 不是中间类
9:38 PM 我:是的,并且不在 JLeaf 类中保存表字段作为变量
 路易斯:避免实例化 JLeaf
 我:没错
9:39 PM 路易斯:这很昂贵... 嗯...
9:40 PM 我:我建议这个还有另一个原因
 路易斯:好的... 那是什么原因?
 我:与 JTree 不同,它涉及 taxonomy_trees 和 taxonomy_tree_maps
  JLeaf 将与许多表格协同工作
  leaf_relations, leave_maps, leaf_alias
9:41 PM Luis: 嗯.. 复杂
  表格处理复杂...
 我:而且操作通常涉及多个表格
  一次
  是的
  而且通常都是原子操作

 

第3节

以下列表

1. 社区页面(所有链接的主页):https://community.joomla.net.cn/gsoc2009/gartheeban-ganneshapillai.html

 

已完成的列表

1. 规格、API和时间线已发布到社区网站。

2. SVN 提交已完成。

3. JTree 的第一个版本已提交。

 

目前正在进行的

1. 阅读Mastering Joomla 1.5 Extension and Framework Development

2. 完成API库

 

短期待办事项

1. 完成JTree

2. 与导师安排会议,讨论JLeaf的进度和实施

3. 尽快并且经常提交更改