在许多具有简单OO功能(PHP 4)或误解OO功能(使用函数指针等的Javascript,C)的语言中,您最终会得到一个使用前导下划线来表示权限级别的函数命名约定.
//ex.
function _myPrivateFunction(){
}
Run Code Online (Sandbox Code Playgroud)
虽然各个团队总是会提出这样的命名惯例,但是下划线惯例看起来如此普遍,以至于让我很好奇
除了纯粹的好奇心之外,我在一些我正在处理的代码库中看到了这一点,并且我想了解最初提出它的开发人员可能的顶空.
在阅读有关MVC框架的在线讨论时,我听到很多评论指向来自Java/.NET开发人员的像Cake,Code Igniter和Symfony这样的PHP项目,其中包括"那些是聪明的黑客,但不是真正的MVC".
那么,是什么让某些东西成为"真正的"MVC框架; 即什么是.NET或Java MVC框架的例子,它做的事情与Cake,Code Igniter,Symfony等不同,那些不同的东西是什么?只是PHP缺乏强制对象导向需要引导程序,还是其他东西?
我知道为什么PHP语言"糟透了",我对MVC实现和/或使用的差异更感兴趣.
这个::有时令人难以置信的名字背后的故事是什么?
T_PAAMAYIM_NEKUDOTAYIM
Run Code Online (Sandbox Code Playgroud)
我主要是想知道是否
我正在开发一个Web应用程序,我想添加一些键盘快捷键.像Ctrl-N或Ctrl-Space这样的东西.不过,我不希望使用已经使用的浏览器的快捷键.
例如,在OS X上使用Google Chrome中的Ctrl-Space快捷键很好,但在OS X上的Firefox中,它会在浏览器中显示一个右键单击菜单.
是否存在可用于Web应用程序的安全(或不安全)的跨浏览器/ OS键盘快捷键的已知列表?
使用RequireJS时,包含脚本的区别是什么
<script data-main="scripts/main" src="scripts/require.js"></script>
Run Code Online (Sandbox Code Playgroud)
和
<script src="scripts/require.js"></script>
Run Code Online (Sandbox Code Playgroud)
即data-main属性在脚本中加载有什么变化?我已经阅读了关于此的文档,而且对我来说并不完全清楚.
您通常会使用数据主脚本来设置配置选项,然后加载第一个应用程序模块.注意:脚本标记require.js为您的data-main模块生成包含async属性.这意味着您不能假设数据主脚本的加载和执行将在稍后在同一页面中引用的其他脚本之前完成.
文档提到您通常会使用数据主脚本来设置配置选项并加载第一个应用程序模块 - 但是您不能通过普通的旧script标签来实现吗?使用data-main属性进行配置加载应用程序模块有什么好处?
与data-main异步加载唯一不同的是什么?或者还有什么?
我正在为Magento电子商务网站创建一个自定义模块,该模块将围绕一个具有复合/复合主键的新(即自定义)表,或者说该表有两列构成主键.有人知道如何根据带复合键的表创建模型/资源模型吗?
为了提供更多细节,我查阅了几个教程并使用了优秀的moduleCreator脚本.但似乎所有的教程围绕着一个只有一列的PK的表.像这样的东西:
class <Namespace>_<Module>_Model_Mysql4_<Module> extends Mage_Core_Model_Mysql4_Abstract {
public function _construct(){
$this->_init('<module_alias>/<table_alias>', '<table_primary_key_id>');
}
}
Run Code Online (Sandbox Code Playgroud)
另外,我只是注意到,查看数据库模型几乎所有表都有一个主键.我知道这与EAV风格的数据库结构有很大关系,但仍然可以使用带有复合PK的表吗?如果可能的话,我想坚持使用Magento框架/惯例.气馁了吗?我应该只更改自定义表的结构以获得一些虚拟ID列吗?我有能力做到这一点,但是geez!
(我认为我会提到的另一个注意事项是,看起来Zend Framework提供了一种基于复合主键在表上创建类的方法(参见本页的示例#20 - 大约一半),所以它似乎Magento框架也应该提供它...我只是不知道如何.)
Oracle是否具有与MySQL TEXT类型相同的列类型?
如果没有,通常如何存储较大的文本blob?BLOB,varchar(32767)?如果重要的话,可以通过PHP访问Oracle 10.历史背景非常受欢迎.
有人可以解释一下吗?
让我告诉你我所知道的.如果前三点好,请解释4点.
之后会发生什么?
模型如何将数据传输到块,或者块从模型中获取数据?
模板获取准备好的数据并显示在屏幕上
请解释.我在几个地方感到困惑.
我有一个stdClassPHP 的对象,类似于
$o = new stdClass;
$o->foo = $bar
Run Code Online (Sandbox Code Playgroud)
该变量$bar包含不受信任的字符串.
以下PHP模板代码是否足够XSS保护
<script type="text/javascript">
var o = <?php echo json_encode($o); ?>;
</script>
Run Code Online (Sandbox Code Playgroud)
我的初始直觉反应是是是安全的,因为编码对象作为JSON将确保任何潜在的javascript漏洞将通过被包括作为JSON串属性的对象被赋予惰性.像这样的东西
$o = new stdClass;
$o->foo = "<script type=\"text/javascript\">alert(document.cookie)</script>";
?>
<script type="text/javascript">
var o = <?php echo json_encode($o) ?>;
</script>
Run Code Online (Sandbox Code Playgroud)
导致像这样的输出
<script type="text/javascript">
var o = {"foo":"<script type=\"text\/javascript\">alert(document.cookie) <\/script>"};
</script>
Run Code Online (Sandbox Code Playgroud)
如果这是不安全的,那么有一种标准的,成熟的方法可以将一个简单的stdClass对象序列化为JSON字符串,以便在<script/>HTML文档的一部分中使用.
在预期第一个快速回答时,我意识到剥离任何HTML标记,或者以其他方式对JSON对象的每个元素进行XSS过滤都可以,但我正在寻找一种简洁的方法来实现这一点.与此类似
//$eBar = addslashes($bar);
$sql = sprintf("SELECT * FROM table WHERE foo = '%s'",mysql_real_escape_string($bar));
Run Code Online (Sandbox Code Playgroud)
还有这个
$sql = $db->select('SELECT …Run Code Online (Sandbox Code Playgroud) PHP的Reflection层次结构中的每个对象都有一个静态导出方法.您可以使用它来获取类的字符串表示形式.代码是这样的
$c = new ReflectionClass('Mage_Core_Model_Abstract');
ReflectionClass::export($c)
Run Code Online (Sandbox Code Playgroud)
将回应以下回复
Class [ <internal:Reflection> class ReflectionClass implements Reflector ] {
- Constants [3] {
Constant [ integer IS_IMPLICIT_ABSTRACT ] { 16 }
Constant [ integer IS_EXPLICIT_ABSTRACT ] { 32 }
Constant [ integer IS_FINAL ] { 64 }
}
- Static properties [0] {
}
- Static methods [1] {
Method [ <internal:Reflection> static public method export ] {
- Parameters [2] {
Parameter #0 [ <required> $argument ]
Parameter #1 [ <optional> $return …Run Code Online (Sandbox Code Playgroud)