2012-06-09 49 views
0

所以我正在学习PHP,以及我学习phpfox更复杂的标准。 我遇到的一个问题是用几行代码 - 我得到他们做的。但我不明白他们为什么以这种方式构建。有人可以解释吗?学习PHP - 有人可以解释这个如果陈述吗?

在下面的代码行中的if语句由{}走投无路而不是通常的:

if thing('condition') { 
do stuff 
} 

方式,我很熟悉。为什么是这样?

{if Phpfox::isUser() && !PHPFOX_IS_AJAX && $sCustomViewType === null} 
{if (Phpfox::getUserBy('profile_page_id') > 0 && defined('PHPFOX_IS_USER_PROFILE')) 
|| (isset($aFeedCallback.disable_share) && $aFeedCallback.disable_share) 
|| (defined('PHPFOX_IS_USER_PROFILE') && !Phpfox::getService('user.privacy')->hasAccess('' . $aUser.user_id . '', 'feed.share_on_wall')) 
|| (defined('PHPFOX_IS_USER_PROFILE') && !Phpfox::getUserParam('profile.can_post_comment_on_profile')) 
} 

{else} 

另外什么是::的事情?当我看到(而不是在这)a |本身,这是干什么的?

非常感谢您的帮助:)

+0

这是谜语时间对我来说:) [符号的 – Sarfraz

+0

可能重复 - 这是什么符号在PHP中意味着什么?](http:// stackoverflow。com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – NikiC

+0

我的猜测是,kooky PHP语法可能是某种模板语言,尽管我不认识它。你还应该看看[范围解析运算符'::'](http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php)和[按位或运算符'|'](http ://php.net/manual/en/language.operators.bitwise.php)。 – lonesomeday

回答

0

看起来像phpfox模板(使用smarty)。

http://www.phpfox.com/kb/article/231/template-tags-in-phpfox/

所以{if}个之间的部分与其他{}你可能已经离开了,是被生成的内容(为HTML),如果在条件,如果是真实的。

:: thing是静态方法的调用。 Phpfox是一个静态方法的类。这些方法不需要一个对象,并且被称为ClassName :: method()

3

这段代码什么都不做。 (从字面上看,它只是检查一些东西,并且什么也不做)。

不要这样编码。


至于::,这就是所谓的Scope Resolution Operator,它用来标记静态类变量,静态类方法和类常量。 ()是Bitwise OR Operator

+0

感谢所有的信息人:)我会研究smarty模板 - 我认为它检查的东西无关紧要的事实是毫无意义的。 人员堆栈溢出对于学习东西非常棒。你们总是会有这么棒的信息。 – user1368968

1

那么, 它似乎并不完全是PHP的。 它是smarty模板的一部分,这就是我们如何在smarty模板文件中使用if else。

来自smarty网站本身的例子。此链接http://www.smarty.net/docsv2/en/language.function.if.tpl

{if $name eq 'Fred'} 
    Welcome Sir. 
{elseif $name eq 'Wilma'} 
    Welcome Ma'am. 
{else} 
    Welcome, whatever you are. 
{/if} 

详情DO纠正我,如果我错了。

+0

这似乎是consensu,我会研究它 - 感谢您的链接 – user1368968

+0

@ user1368968欢迎您。这必须是它。 – avk

0

您可以在smarty模板页面中轻松使用条件。 来自smarty网站本身的例子。

{如果$名称== '阿尼尔'} 阿尼尔古普塔 {}其他弥陀 古普塔 {/ if}个