小编ley*_*cua的帖子

PHP 5.4:获取实例变量的完全限定类名

我知道classPHP 5.5上有一个静态字段,但我必须坚持使用PHP 5.4.是否可以从变量中获取完全限定的类名?

例:

namespace My\Awesome\Namespace

class Foo {

}
Run Code Online (Sandbox Code Playgroud)

以及代码中的其他地方:

public function bar() {
   $var = new \My\Awesome\Namespace\Foo();

   // maybe there's something like this??
   $fullClassName = get_qualified_classname($var);

   // outputs 'My\Awesome\Namespace\Foo'
   echo $fullClassName 
}
Run Code Online (Sandbox Code Playgroud)

php oop reflection

18
推荐指数
3
解决办法
2万
查看次数

如何拦截视图渲染以在所有局部视图上添加HTML/JS?

我需要从约定驱动的位置编写js文件的内容(如〜/ ClientApp/Controllers/Home/Home.js,如果加载位于〜/ Views/Home/Home.cshtml的视图).我该怎么做呢?

示例:如果文件〜/ Views/Home/Home.cshtml如下所示:

<div id="some-partial-view">
   <!-- ... -->
</div>
Run Code Online (Sandbox Code Playgroud)

文件〜/ ClientApp/Controllers/Home/Home.Controller.js看起来像

function HomeController() {
  //some code
}
Run Code Online (Sandbox Code Playgroud)

然后,Web服务器返回的渲染视图应该看起来像(如果使用fiddler)

<!--ommitted <html> <body> tags -->

<div id="some-partial-view">
   <!-- ... -->
</div>

<script type="text/javascript">
   function HomeController() {
       //some code
   }
</script>
Run Code Online (Sandbox Code Playgroud)

一种方法是添加一个HTML Helper,它将执行此操作,例如:

<div id="some-partial-view" ng:Controller="HomeController">
   <!-- ... -->
</div>
@Html.IncludeController("HomeController") 
Run Code Online (Sandbox Code Playgroud)

但是,我不想在所有部分视图中重复这一点.

有任何想法吗?

asp.net-mvc razor

11
推荐指数
1
解决办法
3652
查看次数

在Web场环境中,我们应该将系统日期/时间基于Web服务器还是数据库服务器?

假设Web场中有许多负载平衡的Web服务器,在应用程序代码中使用应用程序/ Web服务器时间来获取系统日期/时间是否安全,还是应该将此责任留给数据库服务器?

webfarm中所有服务器上的机器日期/时间设置是否有可能不同步?

如果日期/时间是DBMS的责任,那么如果我们有负载均衡的集群DB,这个策略将如何运作?

.net web-farm

7
推荐指数
1
解决办法
187
查看次数

哪个SQL查询更好?

这是SQL查询语句:

SELECT p.id, p.[name], SUM(ps.sales_amount) AS GROSS_SALES
FROM products p
  LEFT OUTER JOIN product_sales ps ON p.id = ps.product_id
GROUP BY p.id, p.[name]
Run Code Online (Sandbox Code Playgroud)

优于:

SELECT SUM([t2].[value]) AS [SalesAmount], [t2].[id] AS [ProductId], [t2].[name] AS [ProductName]
FROM (
    SELECT (
        SELECT SUM([t1].[sales_amount])
        FROM [dbo].[product_sales] AS [t1]
        WHERE [t1].[product_id] = [t0].[id]
        ) AS [value], [t0].[id], [t0].[name]
    FROM [dbo].[products] AS [t0]
    ) AS [t2]
GROUP BY [t2].[id], [t2].[name]
Run Code Online (Sandbox Code Playgroud)

第二个是LINQ2SQL查询的结果.仍在寻找重写LINQ表达式的方法......

该示例中最优化的SQL查询是什么?

你的意见?谢谢!

sql database sql-server-2005 linq-to-sql

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

什么时候需要以接口的形式创建抽象?

您何时鼓励对接口进行编程而不是直接针对具体类?

我遵循的准则是在代码需要跨越逻辑/物理边界时创建抽象,尤其是涉及与基础架构相关的问题时.

另一个检查点是,由于可能存在额外的关注代码(例如缓存,事务感知,调用Web服务而不是进程内执行),或者此类依赖关系是否直接引用基础结构集成点,因此将来可能会更改依赖关系.

如果代码依赖于不需要控制来跨越逻辑/物理边界的东西,我或多或少都不创建抽象来与那些进行交互.

我错过了什么吗?

oop abstraction interface

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