CakePHP模型名称使用PHP保留字

时间:2009-12-13 08:03:59

标签: php cakephp keyword

嘿,我已经为很多事情编写了CakePHP编码,但在出人意料之前从未遇到过这个问题。此外,我已经彻底搜索了网络和CakePHP文档,并没有找到我的问题的答案。我的问题是,我有一个表格,我的模型应该命名为Class,显然我不能使用该名称,因为它是一个保留的PHP关键字。我必须有哪些选项才能恰当地引用此模型。

到目前为止,我有;

  1. 将我的班级模型文件重命名为player_class.php
  2. 将我的班级模型类重命名为PlayerClass
  3. 将var $ name更改为“PlayerClass”
  4. 添加到我的班级模型课程; var $ useTable ='classes';
  5. 将我的类控制器重命名为player_classes_controller.php
  6. 将我的类控制器类重命名为PlayerClassesController
  7. 将var $ name更改为“PlayerClasses”
  8. 虽然这确实有效,但这是必须要做的还是其他选项能够将它称为Class仍然可以,就像我可以像_Class一样进行任何类型的修改?

3 个答案:

答案 0 :(得分:4)

I once测试了Cake 1.2的所有CakePHP类名称,如果它们可以用作模型名称,则结果如下:

不可能是:

app
appcontroller
appmodel
behaviorcollection
cache
cacheengine
cakelog
cakesession
classregistry
component
configure
connectionmanager
controller
datasource
debugger
dispatcher
file
fileengine
folder
helper
inflector
model
modelbehavior
object
overloadable
overloadable2
router
security
sessioncomponent
set
string
validation

可能是:

acl
aclbase
aclbehavior
aclcomponent
aclnode
aclshell
aco
acoaction
admin
ajaxhelper
apcengine
apishell
app_model
apphelper
aro
authcomponent
bake
baker
bakeshell
behavior
cachehelper
cake
cakeschema
cakesocket
consoleshell
containablebehavior
controllertask
cookiecomponent
dbacl
dbaclschema
dbconfigtask
dboadodb
dbodb2
dbofirebird
dbomssql
dbomysql
dbomysqlbase
dbomysqli
dboodbc
dbooracle
dbopostgres
dbosource
dbosqlite
dbosybase
element
emailcomponent
error
errorhandler
extracttask
flay
formhelper
htmlhelper
httpsocket
i18n
i18nmodel
i18nschema
i18nshell
iniacl
javascripthelper
jshelper
jshelperobject
l10n
layout
magicdb
magicfileresource
mediaview
memcacheengine
modeltask
multibyte
numberhelper
page
pagescontroller
paginatorhelper
permission
plugintask
projecttask
requesthandlercomponent
rsshelper
sanitize
scaffold
schema
schemashell
securitycomponent
sessionhelper
sessionsschema
shell
shelldispatcher
test
testsuiteshell
testtask
texthelper
themeview
timehelper
translate
translatebehavior
treebehavior
viewtask
xcacheengine
xml
xmlelement
xmlhelper
xmlmanager
xmlnode
xmltextnode

答案 1 :(得分:3)

当我遇到这种问题时,我通常会做你所做的事情,只有我用“我的”作为保留字的前缀(所以当我读取代码时,它看起来不像那个类与“播放器”有关“...例如,就在前几天我想模拟一个”ACO“模型..但是那已经存在于蛋糕中(保留字的相同情况)所以我创建了一个名为Myaco的模型。

我认为你应该把它命名为Myclass。

关于型号名称和控制器名称的更改 - 我认为你做得很好,我也会这样做。您唯一真正的选择是使用$useTable = 'classed';来使用您的数据库表。

如果你使用下划线前缀,我相信cake将无法处理它(它将在Inflector类中失败)。

祝你好运

答案 2 :(得分:1)

我可以提出这个解决方案。我有同样的问题,并使用前缀作为客户端的首字母。结束了我的Dtclass。不幸的是,我花了一个小时左右来弄清问题是什么。其中一个案例,答案一直盯着你,直到你终于认出它为止。