小编Max*_*rov的帖子

从MySQL数据库中删除权限

在你认为这是一个重复的问题之前,我相信我有一个独特的,即使它有点愚蠢的情况.

几天前,我将我的Ubuntu 10.04服务器上的MySQL版本升级到5.3.3(它超过了10.04的Ubuntu版本).今天,我尝试登录phpMyAdmin,发现了一些有些可怕的Connection for controluser as defined in your configuration failed错误.

在按照几个关于如何解决这个问题的SO问题的描述之后,我已经陷入困境.

  • 我试图重新配置phpMyAdmin,但没有成功.
  • 我试图卸载phpMyAdmin并重新安装它,但它无法从数据库中删除权限并失败.
  • 然后我尝试手动删除用户的权限 - 有点愚蠢,我可能会添加 - 来自数据库,然后删除数据库,然后删除用户(带flush privileges).
  • 我完全删除了phpMyAdmin的整个安装(删除了应用程序和/ etc/phpmyadmin目录)并重新安装(使用apt-get),但是它表示phpmyadmin用户的权限已经存在:

granting access to database phpmyadmin for phpmyadmin@localhost: already exists

所以,这就是我留下的东西.我有一笔不能修改的补助金,也没有撤销:

mysql> show grants for 'phpmyadmin'@'localhost';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY PASSWORD '*46CFC7938B60837F46B610A2D10C248874555C14' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost'                                                |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in …
Run Code Online (Sandbox Code Playgroud)

mysql ubuntu privileges phpmyadmin grant

53
推荐指数
2
解决办法
11万
查看次数

ActiveRecord的大型应用设计问题

在大多数框架中,您具有表示数据库中的行的模型类.

例如php代码:

class User extends Model {}
Run Code Online (Sandbox Code Playgroud)

我正在给Laravel雄辩的例子,但对大多数php框架来说都是如此.

然后在类中添加关系:

public function pictures()
{
    return $this->hasMany('App\Picture');
}
Run Code Online (Sandbox Code Playgroud)

然后你添加一些像这样的方法:

public function deleteComments()
{
    // delete comments code here
}
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是:这是一个好的设计架构,因为在项目变大之后,你会有很多关系(图片,评论,帖子,订阅等等与用户相关联).这个类可能会变成10k行代码.

在这种情况下,课程将变得非常庞大且难以维护.也可能违反了单一责任原则,因为你在一个班级中有太多的方法.

此外,如果我想在另一个应用程序中使用它,我不能,因为我将不得不在第二个应用程序(网站)中提取图片,评论等.

如果我创建其他类" UserPictures"," UserPictureDeleter"代码会变得更复杂.

这是一个好的做法,如果没有,你有什么建议,如何使代码不会膨胀这么多的方法,但易于使用.你是否同意所有这些方法属于User同类?

php oop design-patterns laravel eloquent

8
推荐指数
1
解决办法
248
查看次数

工厂方法可能违反得墨忒耳法?

引用自:https://en.wikipedia.org/wiki/Law_of_Demeter

更正式地说,函数的Demeter法则要求对象O的方法m只能调用以下类型的对象的方法:[2]

  • O本身

  • m的参数

  • 在m中创建/实例化的任何对象

  • O的直接组件对象

  • 一个全局变量,可由O访问,范围为m

特别是,对象应该避免调用另一个方法返回的成员对象的方法

所以详细说明:

class O
{
    private $c;
    public function m($obj1)
    {
        $this->a(); // OK
        $obj1->a(); // OK
        (new C())->a(); // OK
        $c->a(); // OK
        $a = function() { };
        $a(); // OK
    }

    private function a() {}
}
Run Code Online (Sandbox Code Playgroud)

现在第3条法律值得怀疑.所以我新创建了一个对象.但如果我而不是:

(new C())->a();
Run Code Online (Sandbox Code Playgroud)

我做:

$this->factory->createC()->a();
Run Code Online (Sandbox Code Playgroud)

它还有效吗?一个普通的课程被实例化,只是new一个工厂而已.但是嘿!该法律说:

特别是,对象应该避免调用另一个方法返回的成员对象的方法

按此规则,工厂方法失败!怎么办?它真的失败了吗?

php oop factory law-of-demeter

8
推荐指数
1
解决办法
226
查看次数

将 URL 规范化为相同形式的 PHP

我想根据列表检查 URL 以做出有关处理的选择(这将查看数据流,而不是作为应用程序中的路由器)但是 HTTP 使得以多种不同方式表示相同的URL变得非常容易,例如(改编自RFC 2616):

http://example.com/~smith/home.html
http://example.com:80/~smith/home.html
http://EXAMPLE.com/%7Esmith/home.html
http://EXAMPLE.COM/%7esmith/home.html
Run Code Online (Sandbox Code Playgroud)

都代表相同的目标资源。

我希望能够将 URL 转换为规范形式...

  • 主机名的情况要一致
  • 支持不是方案、用户名、密码、端口、路径、查询和片段的完整元组的 URL
  • 明智地处理隐式端口和显式端口号
  • 得到的 URL ascii 用 %.... 适当的扩展序列编码
  • 明智地处理路径中的 './' 和 '../'
  • 可选地对查询中的变量进行一致排序

有没有一种简单的方法可以始终如一地做到这一点?

(似乎这些parse_url()都没有。)

php url

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

从站点目录的url下载文件

两个zip文件和两个图像位于https://example.com/directory中.(由于index.php文件在此目录中可用,我们不知道这些文件的文件名).

有没有办法使用PHP或Linux命令查找上述四个文件的名称?

php linux

-6
推荐指数
1
解决办法
1462
查看次数