偶尔,我发现我需要对一些对象进行排序,将它们按多个值分组.我通常通过将值连接在一起,在它们之间使用下划线或其他描述符来完成此操作,然后将其用作数组索引.
// group all objects with a common parent_id, date, and type
foreach ($objects as $obj) {
$hash = $obj->parent_id . '_' . $obj->date . '_' . $obj->type;
$sorted_objects[$hash][] = $obj;
}
Run Code Online (Sandbox Code Playgroud)
...麻烦!除了滥用PHP的松散输入和字符串连接之外,还有一种更好的方法.有没有办法对多个值执行哈希?看来我应该能够做这样的事情:
$hash = sha1_multiple($obj->parent-id, $obj->date, $obj->type);
Run Code Online (Sandbox Code Playgroud)
我已经使用过最好的方法,还是有更好的方法?
所以我刚开始使用Python,目前正在通过http://diveintopython3.ep.io/开始工作.代码示例很好,但绝大多数都是小四行片段,我想看到更多的大局.
据我理解 - 如果我错了就纠正我 - 每个'.py'文件变成一个"模块",一个目录中的一组模块变成一个"包"(至少,如果我创建它的话)__init__.py该目录中的文件).如果我没有__init__.py文件,该怎么办?
那么每个"模块"文件是什么样的?我通常只在文件中定义一个类吗?除了类定义之外还有其他什么东西可以放在那个文件中,也许还有一些import命令?
我正在研究一个小的MVC框架,我想知道什么是"最好的方法"来构建东西所以安全页面/控制器总是确保用户登录(因此自动重定向到登录页面 - 或其他地方 - -如果不).显然,有很多方法可以做到,但我想知道什么解决方案是最常见的或被认为是最佳实践.我有一些想法:
user->isLoggedIn()在控制器操作方法的开头明确调用?(似乎太容易忘记并且在发生意外时保留重要页面不安全)secureController始终检查构造函数中的登录?注意:我正在使用PHP,但问题不依赖于语言.
就像标题说的:为什么包括微软在内的人都说 ORM 只是实体框架中的一个特性?它和典型的 ORM 有什么不同?对我来说,EDM 与来自 nHibernate 的 XMl 映射相同。为什么微软说这不一样?
如果我使用.data()将一些键值对附加到DOM元素,有没有办法迭代它们以便我可以在控制台中记录它们?或者,有没有办法使用像FireBug这样的开发工具查看这些数据?这在调试脚本时非常有用.
据我所知,PHP stdClass代码通常比数组更快,当代码深度嵌套足以让它真正重要时.如果我要进行类型转换以便动态定义stdClass对象,那么效率如何受到影响:
$var = (object)array('one' => 1, 'two' => 2);
Run Code Online (Sandbox Code Playgroud)
如果执行此操作的代码将被执行多次,那么我最好明确定义$var为对象:
$var = new stdClass();
$var->one = 1;
$var->two = 2;
Run Code Online (Sandbox Code Playgroud)
差异可以忽略不计,因为我$var将从那里作为对象访问,无论哪种方式?
编辑:
stdClass是我需要的数据类型.我不关心我是否应该使用数组或是否应该使用stdClass对象; 我更关心的是使用(object)array(....)实例化a 的简写stdClass是否有效.是的,这是代码,可能会被执行数千次.
我有一个Account对象列表self.accounts,我知道其中只有一个会有一个type等于'equity' 的属性.从列表中仅获取该对象的最佳(最pythonic)方法是什么?
目前我有以下内容,但我想知道[0]最后是否是多余的.有没有更简洁的方法来做到这一点?
return [account for account in self.accounts if account.type == 'equity'][0]