我正在考虑devise一个在我的网站上使用的成就系统的最佳方式。 数据库结构可以find最好的方式来告诉3个或更多的连续logging丢失 ,这个线程真的是从开发人员的想法的延伸。 我在这个网站上有很多关于徽章/成就系统的问题就是这样 – 这都是谈话,没有代码。 实际的代码实现在哪里呢? 我在这里提出了一个devise,希望人们能够贡献并希望为可扩展成就系统编码创build一个良好的devise。 我不是说这是最好的,远非如此,但这是一个可能的出发点。 请随时提供您的想法。 我的系统devise理念 似乎普遍的共识是创build一个“基于事件的系统” – 每当一个已知的事件发生像一个职位创build,删除等,它就像这样调用事件类。 $event->trigger('POST_CREATED', array('id' => 8)); 事件类然后找出什么徽章“听”这个事件,然后它requires该文件,并创build该类的实例,如下所示: require '/badges/' . $file; $badge = new $class; 然后它调用传递trigger被调用时收到的数据的默认事件; $badge->default_event($data); 徽章 这就是真正的魔法发生的地方。 每个徽章都有自己的查询/逻辑来确定是否应颁发徽章。 每个徽章都采用如下格式: class Badge_Name extends Badge { const _BADGE_500 = 'POST_500'; const _BADGE_300 = 'POST_300'; const _BADGE_100 = 'POST_100'; function get_user_post_count() { $escaped_user_id = […]
我正在放弃GD来操纵我的网站中的图像 – 这是可怕的。 大家都说使用ImageMagick是因为它们比GD好,但ImageMagick vs Gmagick( 瑞士军刀的image processing )呢? Zend在这里有一篇漂亮的文章http://devzone.zend.com/article/10531谈论它们。 在我离开ImageMagick之前,有没有使用gmagick的动机呢? (PHP 5.3+) 编辑:问什么是两个库之间哪个更好? 我认为这是一个公平的问题。 如果有人能解释一个lib的优点,那么会帮助我和其他人阅读这个问题。 为什么要closures这样的问题? 编辑2:对于每个人问我需要做什么:我认为这是不知情的:用户上传图像(比可以png / gif / bmp瓦特/ e)我需要转换成JPG,然后将其存储在数据库中,最终如果他们太大我需要调整他们的一点点。 谢谢
我需要将JSON对象放入HTML元素的属性中。 HTML不必validation。 Quentin回答: 将JSON存储在data-*属性中 ,该属性是有效的HTML5。 JSON对象可以是任何大小 – 即巨大 由Maiku Mori回答: HTML属性的限制可能是65536个字符 。 如果JSON包含特殊字符呢? 例如 {foo: '<"bar/>'} Quentin回答:根据惯例,在将JSONstring放入属性之前对其进行编码。 对于PHP,使用 htmlentities() 函数。 编辑 – 使用PHP和jQuery的示例解决scheme 将JSON写入HTML属性: <?php $data = array( '1' => 'test', 'foo' => '<"bar/>' ); $json = json_encode($data); ?> <a href="#" data-json="<?php echo htmlentities($json, ENT_QUOTES, 'UTF-8'); ?>">CLICK ME</a> 使用jQuery检索JSON: $('a').click(function() { // Read the contents […]
我已经阅读了关于学说的文献中的保湿,但我仍然不明白是什么。 有人可以解释吗?
PHP接口允许在接口中定义常量,例如 interface FooBar { const FOO = 1; const BAR = 2; } echo FooBar::FOO; // 1 任何实现类将自动具有这些常量,例如 class MyFooBar implement FooBar { } echo MyFooBar::FOO; // 1 我自己的看法是,全球化是邪恶的 。 但是我想知道是否同样适用于接口常量。 鉴于对接口进行编码通常被认为是很好的做法,使用接口常量是唯一可以在类上下文之外使用的常量吗? 虽然我很好奇听到你的个人意见,而不pipe你是否使用接口常量,我主要是在你的答案中寻找客观的原因。 我不希望这是一个民意调查types的问题。 我对使用接口常量对可维护性有什么影响感兴趣。 耦合。 或者unit testing。 它与SOLID PHP有什么关系? 它是否违反在PHP中被认为是良好实践的任何编码原则? 你明白了 注意: 对于Java也有一个类似的问题 ,列出了一些很不好的理由,因为它们是错误的实践,但是由于Java不是PHP,所以我觉得在PHP标签中再次提出这个问题是合理的。
PHP会话ID有多独特? 我从各种事情中得到了印象,我不应该依赖两个用户永远不会获得相同的sessionid。 这不是一个GUID?
我有两个表格,即主题和用户。 主题模式: public function user() { return $this->belongs_to('User'); } 用户模式: public function themes() { return $this->has_many('Theme'); } 我雄辩的API调用如下所示: return Response::eloquent(Theme::with('user')->get()); 其中返回从主题(这很好)的所有列,和用户(不好)的所有列。 我只需要用户模型的“用户名”列,我怎样才能限制查询?
可能重复: 获取今天和昨天的时间戳在PHP中 我想知道是否有一个简单的方法获取昨天的date通过这种格式: date("F j, Y");
当我使用array_merge()与关联数组时,我得到了我想要的,但是当我用数字键arrays来使用它们时,键会被改变。 +键保留,但不能与关联数组一起使用。 我不明白这是如何工作的,有人可以向我解释吗?
我已经用PHP开发了大约8年的业余爱好了。 在2009年,我select了codeigniter,从那以后,我没有设法开发一个单一的项目。 我发现它使我慢下来试图找出如何修改它,以我想要的方式工作,如果我在纯PHP中工作,我会知道,或者我将能够快速find一个片段。 我试过CodeIgniter,Kohana和Symfony。 我喜欢易用性(而且我也开始使用教条作为一个ORM,它极大地加快了我的数据库工作),但是我发现项目花费了3-4倍于纯PHP的时间。 当我找不到解决scheme来解决我之前在纯PHP中解决的问题时,我感到无聊和沮丧。 有没有人从使用框架回到没有框架的方法。 有没有什么像一个基本的安全框架(防止XSS,过滤张贴的数据,提供清洁function用于数据库)? 我认为像这样的东西比我们的全面的框架更有利于我。 我认为学习使用框架已经教会了我很多,但我更乐意使用自己的代码。