小编Jos*_*ith的帖子

在PHP中重构这两个非常相似的类的OO方法是什么?

我有一个类如下:

class DreamsImagesStore
{
  public $table = 'dreams_images';

  public function insertNewDreamImage($dream_id, $pid)
  {
    try {
      $values = array($dream_id, $pid);
      $sth = $this->dbh->prepare("INSERT INTO {$this->table}
                                (dream_id, pid)
                                VALUES (?, ?)");
      if($sth->execute($values)) {
        return true;
      }
    } catch(PDOException $e) {
      $this->errorLogger($e);
    }
  }
...
}
Run Code Online (Sandbox Code Playgroud)

我将要实施一项名为InterestsImagesStore新的类,其中这些类之间的唯一区别将是价值$table,$dream_id$interest_iddream_idSQLinterest_id.

我知道有更好的方法可以做到这一点,我将在未来实现类似的类,这些类有很小的差异.

为了避免重复和提高可维护性,重构代码的最佳面向对象方法是什么?

php oop refactoring

5
推荐指数
1
解决办法
172
查看次数

PHP中的日志记录/跟踪:Scribe,Chukwa,log4php?

这可能是一个非常高级的问题,需要大量的解释,但我需要大量的解释.

基本上我正在开发一个需要大量日志记录和跟踪的PHP应用程序.跟踪点击次数,互动,表现等等.在阳光下的任何事情.Facebook的Scribe和雅虎的Chukwa都是很好的实现.我对log4php知之甚少.

我想要的是这种日志记录如何工作的高级概述,特别是与PHP应用程序结合使用.您可以在处理日志的位置停止; 我已经知道我想使用Hadoop/Hive进行处理和存储.

我还想对应用程序本身内发生的事情进行一些相当低级的研究.例如,如何获取点击的行为并将其发送到记录器?我也很感激任何可以帮助我开始的阅读.

php logging log4php scribe-server chukwa

4
推荐指数
1
解决办法
2081
查看次数

MySQL中有两个左连接和一个联合

我正在尝试做一个相当复杂的查询 MySQL ; 对我来说很复杂,至少.

这是我正在尝试做的一个例子:

SELECT * FROM friends
LEFT JOIN users ON users.uid = friends.fid1
LEFT JOIN users ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2  = 1) AND (friends.fid1 < 1)
ORDER BY RAND()
LIMIT 6;
Run Code Online (Sandbox Code Playgroud)

我回来了:ERROR 1066 (42000): Not unique table/alias: 'users'.

我哪里出错了,我该怎么做才能真正执行这个查询?

mysql sql mysql-error-1066

4
推荐指数
1
解决办法
1111
查看次数

如何使用MySQL重新索引Sphinx

我想弄清楚我应该如何重新索引Sphinx.我正在使用v 0.9.9,所以我没有能力对索引进行实时更新.

我想我在某个地方读到这可以使用cron作业完成,并且索引不需要完全重建(所以不要停止守护进程).也就是说,我从来没有写过任何cron工作,所以不知道从哪里开始.

有什么想法吗?

php mysql cron sphinx

4
推荐指数
1
解决办法
5144
查看次数

如何使用Devise将用户名列入黑名单?

我有Devise设置允许使用电子邮件或用户名登录.使用您的用户名,您可以拥有如下虚荣URL : vanity.com/username. 因此,我的用户模型attr_accessible :username以及attr_accessor :login.

为了防止用户名与未来的功能冲突,我想在某些用户名上实现黑名单.你可以在这里看到GitHub使用的一个很好的示例列表.

我是Devise的新手,并在他们的wiki中搜索了how-to的内容,看看这个用例或类似的内容是否覆盖在那里.它似乎不是.

如何在Devise中将某些用户名列入黑名单?

registration blacklist username devise

4
推荐指数
1
解决办法
970
查看次数

使用UICollectionViewFlowLayout在UICollectionView中的第一个项目上进行左边距填充

我使用的是UICollectionView同一个UICollectionViewFlowLayout,试图在仅视图中的第一个项目实现左填充/保证金.我已经查看了每个实例的所有实例属性和方法,但似乎无法找到有帮助的实例.

为了清楚起见,我仍然希望视图可以在应用程序的整个宽度上滚动,因此只需移动周围的框架就无济于事了.

iphone cocoa-touch objective-c ios ios6

4
推荐指数
1
解决办法
840
查看次数

从数据库中删除"朋友"的最佳做法是什么?

假设你有一个这样的表模式:friends(friendship_id, uid1, uid2, are_friends).

当一个朋友与另一个人取消联系时,最好从数据库中删除该行(并重置自动递增)?或者你应该简单地将are_friends状态更改为"N"

我很想知道你的想法和原因.

编辑:我主要关注的是显示有关朋友状态的一些信息,还会显示谁是谁的朋友.那样在添加的时候我可以通知受害者的请求,但还没有让他们成为朋友.

我原本有are_friends一个大型ENUM有更多的选择.但是因为ENUM我有像removed和等的选项blocked,我不确定这是否真的是有用的数据.关于拥有更多数据与更少数据的优点的任何进一步想法?

另外,自我发布以来我已经提出的另一个问题是如何避免重复友谊.你应该制作(uid1, uid2)一把钥匙吗?

mysql database database-design social-networking

3
推荐指数
1
解决办法
407
查看次数

在git pre-commit钩子中聚合和ugglifying javascript

我正在使用ready.js将JS文件聚合到一个all.js文件中(没有Google的Closure Compiler),然后使用uglify-js缩小和混淆代码.我想在预提交钩子中完成所有这些操作.

但是,我认为我做错了什么.

我的.git/hooks/pre-commit文件看起来像这样:

#!/bin/sh
readyjs ~/Sites/backbone/js/javascripts/ ~/Sites/backbone/js/ --nojslint -o "underscore.js, backbone.js" --nocompiler
uglifyjs -nm -o ~/Sites/backbone/js/all.min.js ~/Sites/backbone/js/all.js
# Commit
exit
Run Code Online (Sandbox Code Playgroud)

我不应该在这里使用简单的Bash吗?还有别的我做错了吗?这一步似乎完全被忽略了.

git continuous-integration githooks uglifyjs

3
推荐指数
1
解决办法
1175
查看次数

将内部和外部box-shadow应用于单个HTML元素

是否可以一次将2个框阴影应用于HTML元素?我正在尝试应用内部(插入)和外部框阴影.

这使得效果在元素内部模糊,然后只是正常的外部阴影.

例如:

box-shadow: inset 5px 5px #000000;
box-shadow: -1px 5px #FF00FF;
Run Code Online (Sandbox Code Playgroud)

html css css3

3
推荐指数
1
解决办法
4624
查看次数

在Express中将菜单渲染为Jade视图部分

我无法概念化如何使用Jade视图部分在Express应用程序中呈现具有活动状态的菜单.

我有这样的事情:

ul.menu
  li
    a(href='/some/route').active
  li
    a(href='/another/route')
Run Code Online (Sandbox Code Playgroud)

我想要的是将.active类应用于当前路由,因此我的CSS可以呈现活动的UI状态.

当我用PHP编写时,这将通过一些复杂的if/else语句链完成,但我假设有一种更优雅的方法.我错过了什么?

menu view node.js express pug

2
推荐指数
1
解决办法
2960
查看次数