2009-12-13 43 views
4

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

到目前为止我有;

  1. 我改名类模型文件player_class.php
  2. 我改名类模型类PlayerClass
  3. 更改变量$名称为“PlayerClass”
  4. 添加到我的类模型类; var $ useTable ='classes';
  5. 改名我班控制器player_classes_controller.php
  6. 改名我班控制器类PlayerClassesController
  7. 更改变量$名称为“PlayerClasses”

虽然这工作,请问这是什么必须做或者还有其他选项能够将它称为Class,就像我可以像_Class一样进行任何类似的变形?

+1

感谢您的真棒问题。因为CakePHP模型问题上的保留字使用问题,因此Internet会关闭。你已经救了我,找到一个合适的解决方案。肯是正确的下划线将失败。 – ozanmuyes 2013-07-29 14:25:15

回答

3

当我遇到这种问题时,我通常会做你所做的事情,只有我在保留字前面加上“我的”(所以当我阅读代码时,它看起来不像那个类有什么关系“玩家“...例如,就在那天,我想塑造一个”ACO“模型......但是它已经存在于蛋糕中(保留字的相同场景),所以我创建了一个名为Myaco的模型。你应该将其命名为MYCLASS。

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

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

祝你好运

+0

感谢您的回复,这是一个好主意。我的班级“班级”适用于像战士这样的魔兽世界职业,所以我可以坚持使用PlayerClass,在其他情况下,我很可能会使用该规则。 – Axpen 2009-12-13 08:43:03

+0

只是一个与梦幻角色扮演相关的小观察而不是编程:在Dungeons&Dragons中,使用的全部术语是“角色类”而不是“玩家类”。这在魔兽世界中是否也是如此? – Jakob 2009-12-13 09:06:42

+0

好的观察,那将是更好的选择。 – Axpen 2009-12-14 03:55:16

1

我可以第二个解决方案。我遇到了同样的问题,并使用了客户端名称的前缀。结束了叫我的Dtclass。不幸的是,我花了一个小时才弄清楚问题所在。其中一种情况是答案一直盯着你,直到你终于认出它为止。

4

once测试了所有的CakePHP类名的蛋糕1.2,如果它们可以被用来作为型号名称,这里的结果:

不可能是:

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 
+0

在“不可能”中包含“print” – Fr0zenFyr 2017-08-22 19:07:19

相关问题