php学习:构建样例应用程序(三)
操作方法
- 01
注:symfony 提供了自动生成代码的功能,用于基于数据库提供 Create、Read、Update 和 Delete (CRUD) 功能。虽然这可以帮助您快速地集中应用程序的基本信息,但是在这种环境下使用它,您无法清楚地了解 symfony 应用程序进行整合的方式。基于本文的学习目的,您将手动构建应用程序。 生成模型 您将使用的 posts 表同样是在 第 1 部分 中创建的。 由于 symfony 将使用 Propel 来提供对象关系映射 (Object Relational Mapping),因此需要用 symfony 命令行实用程序来生成模型。这要求描述数据库模式并先提供一些数据库信息。 注:技术上讲,没有必要先提供数据库信息。symfony 将根据模式构建模型,并且甚至可以使用命令行实用程序生成 SQL 脚本以根据模式定义创建数据库。我们将在后面的一篇文章中尝试该操作。 对于数据库和模式定义文件,symfony 将使用 Yet Another Markup Language (YAML)。YAML 不太复杂,但是如果您以前从未使用过它,则它可能会有些令人迷惑。在这个例子中,对于 YAML 需要了解到 whitespace 非常重要。使用两个空格表示缩进,而且绝不使用制表符。 现在将编辑 database.yml 和 schema.yml 文件。这些文件位于 /column/protected/sf_column/config 中。并且需要编辑 schema.yml 文件来描述 posts 表。编辑模式文件以包含下列信息: 清单 2. 编辑 schema.yml 文件 propel: posts : _attributes: { PHPName: Post } id: title: varchar(255) text: longvarchar modified: timestamp 注:由于您可能是复制并粘贴了这段代码,请返回查看并确保每个缩进都是两个空格,并且未使用任何制表符。例如,modified 行开头前应当有四个空格(两个表示 posts 的缩进,两个表示 modified 的缩进)。 应当编辑 database.yml 文件使其包含具体的数据库参数。该文件看上去可能类似清单 3。 清单 3. database.yml 文件 all: propel: class: sfPropelDatabase param: PHPtype: MySQL hostspec: localhost database: symfony username: Frameworks password: fwpw 这应当不难。现在模式和数据库配置已经完成,您可以生成模型了。返回到先前使用的命令行并在 /column/protected/sf_column 中执行以下命令: php /column/protected/symfony/data/bin/symfony propel-build-modelphp /column/protected/symfony/data/bin/symfony clear-cache 每条命令都将输出大量数据,但是重要的最终结果是在 /column/protected/sf_column/lib/model 中创建 Post.php 和 PostPeer.php 文件 —— 这些是您的模型。如果打开这些模型,您将看到那里面没有很多内容。它们只是扩展了基本模型类。 注:无论何时重新构建模型,都必须运行上面的 clear-cache 命令。 好的!这一轮对模型的学习已经完成。关于模型还有很多内容可说,但是接着需要构建控制器。 构建控制器 您不需要像在 Zend 中一样编写 Front 控制器,因为 symfony 已经为您提供了该控制器。 post 控制器实际上将被称为 actions.class.php 并且将位于 /column/protected/sf_column/apps/blahg/modules/post/actions 中。此控制器将为 post 模块处理所有操作。像以前一样,您需要三个操作,但是名称不同:executeIndex、executeRead 和 executeWrite(executeXxxxxx 是 symfony 所使用的操作命名约定,并且必须遵守)。