我是DDD的新手,但我正在尝试将DDD概念融入我当前的项目中.
对于我域中的许多实体,客户端需要独立于任何特定工作流执行所有标准CRUD操作.我发现自己有许多应用程序级服务,其名称如UserService或LocationService,只是作为各个存储库的外观.
这些应用程序服务作为存储库外观是应用程序服务模式的"正确"应用程序吗?或者CRUD专用方法是否应该停止应用程序服务?如果是这样,接口层是否应该有一个存储库外观?
architecture design-patterns domain-driven-design repository
我有一些关于php会话的问题:
由于默认值session.gc_maxlifetime是24分钟,那么这意味着,任何一届会议的文件不会被修改为24分钟,将被删除,会话将自动失效.
如果我session_destroy()在我的代码中使用会话将被取消设置,但会话文件本身将不会被删除,直到自上次修改后经过24分钟.
延长会话寿命(超过24分钟)的唯一方法是扩展session.gc_maxlifetime到更大的值.
这些都是正确的还是我弄错了?
此外,如果我session_set_save_handler()将会话存储在数据库中(使用),所有这些规则是否适用于它们?
维基百科引用的DI的定义指出:
A.高级模块不应该依赖于低级模块.两者都应该取决于抽象.B.抽象不应该依赖于细节.细节应取决于抽象.
我正在尝试将该原则应用于我的代码:
class Printer{
private $logger;
function __construct(Zend_Log $logger){
$this->logger=$logger;
}
function print(){
//Some code
$this->logger->log('Logger in action ;)');
}
}
Run Code Online (Sandbox Code Playgroud)
既然为什么Printer类依赖于Zend_Log哪个既不是抽象类也不是接口,那么我就违反了依赖性倒置原则.
如何知道Zend_Log不扩展抽象类也不实现接口?
我的应用程序包含一个错误,它使脚本运行无限长.当我强制脚本停止时,所有jQuery UI元素都不会回复我的操作,也不会回应按键的应用程序.
如果我选择打开Firebug,则需要重新加载页面,并且所有当前的应用程序状态都将丢失.
问题是我无法重现这个错误,这有点让我发疯.如何找到并修复这种光滑的bug?
UPDATE.谢谢大家的建议.但问题是我无法弄清楚何时发生错误,因此无法重现错误.这就是为什么标准程序在我的情况下不起作用的原因.
我已经检查了每个while循环和递归函数调用,但还没有弄清楚问题.
发布代码并不是一个好主意 - 代码列表非常庞大而且相当复杂(游戏).
可能的解决方案.我将按照已发布的提示之一进行操作,并尝试对所有可能导致问题的功能进行控制.希望能帮助到你.
使用这段代码我可以正常使用zend框架连接到mysql:
resources.db.adapter = "Pdo_Mysql"
resources.db.params.host = "xx.xx.xx.xx"
resources.db.params.username = "test_user"
resources.db.params.password = "test_pass"
resources.db.params.dbname = "test_database"
resources.db.params.port="xxxx"
;parameters here for ssl connection??
Run Code Online (Sandbox Code Playgroud)
在我的Controller:
public function indexAction() {
$config = new Zend_Config_Ini('/path/to/application.ini', 'development');
$db = Zend_Db::factory($config->resources->db);
$sql = 'SELECT * FROM test_table';
$result = $db->fetchAll($sql);
echo '<pre>';
print_r($result);
}
Run Code Online (Sandbox Code Playgroud)
现在问题是我想使用ssl连接到mysql ,但我还没有找到任何关于如何做到这一点的文档.
我设法通过配置ssl连接,在数据库管理员的帮助下使用Navicat连接到服务器,如下所示:

现在的问题是如何使用PHP连接?
我有一个伪代码中的简单实体 Order:
class Order{
private int quantity;
private Date orderDate;
private Date shippingDate;
public Order(int quantity, Date orderDate, Date shippingDate){
if(quantity <= 0){ throw new Exception("Invalid quantity")}
if(shippingDate < orderDate){ throw new Exception("Invalid shippingDate")}
if(...more validation...){....throw Exceptions...}
//assign values if everything is OK
}
}
Run Code Online (Sandbox Code Playgroud)
描述、数量、订单日期和发货日期都是从 Web 表单中读取的,其中每个都是由多个验证器配置的文本字段:
quantityField= new TextField('txt_quantity');
quantityFiled.addNotNullValidator().addNumaricValidator().addPositiveIntegerValidator()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,验证逻辑在TextField验证和实体验证之间是重复的。
我试图通过创建Quantity类、OrderDate类和ShippingDate类来向我的实体引入值对象的概念。所以我的Order实体变成这样:
class Order{
private Quantity quantity;
private OrderDate orderDate;
private ShippingDate shippingDate;
public Order(Quantity quantity, …Run Code Online (Sandbox Code Playgroud) 在下面的代码中抛出一个Exception不回滚事务,但抛出一个RuntimeException.
@Service
public class HelloService {
@Autowired
protected CustomerRepository repository;
@Transactional
public void run() throws Exception {
repository.save(new Customer("Jack", "Bauer"));
throw new RuntimeException("Kabooom!!!"); //Transaction is rolled back. Database is empty :)
//throw new Exception("Kabooom!!!"); //If this is used instead the records are inserted into the database. :(
}
}
Run Code Online (Sandbox Code Playgroud)
我的存储库:
public interface CustomerRepository extends CrudRepository<Customer, Long> {
}
Run Code Online (Sandbox Code Playgroud)
Spring boot appliction.properties:
# DataSource settings: set here configurations for the database connection
spring.datasource.url = jdbc:mysql://localhost/hobbadb
spring.datasource.username = …Run Code Online (Sandbox Code Playgroud) 鉴于这3个实体:
@Entity
class Department{
Set<Employee> employees;
Set<Employee> getEmployees(){
return this.employees;
};
}
@Entity
class Employee{
Nationality nationality;
Nationality getNationality(){
this.nationality;
}
}
@Entity
class Nationality{
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个投影,Department让所有部门都有员工和国籍.我所取得的成就是让所有部门与员工一起使用:
@Projection(name = "fullDepartment", types = { Department.class })
public interface DepartmentsProjection {
Set<Employee> getEmployees();
}
@RepositoryRestResource(collectionResourceRel = "department", path = "departments")
public interface DepartmentRepository extends JpaRepository<Department, Long> {
}
Run Code Online (Sandbox Code Playgroud) 我试图构建一个应用程序,将一些文件从各种ftp服务器下载到本地目录.稍后我会将它们上传到其他ftp服务器.
该应用程序是使用Zend框架构建的.
问题是我找不到一个类来处理Zend框架中的ftp下载/上传功能.
唯一可用的课程Zend_File_Transfer有以下评论:
注意:限制
Zend_File_Transfer的当前实现仅限于HTTP Post Uploads.将来的版本中将添加支持下载和其他协议的其他适配器.未实现的方法将引发异常.目前,您应该直接使用Zend_File_Transfer_Adapter_Http.只要有多个适配器可用,您就可以使用通用接口.
我需要能够做到以下几点:
Zend框架中是否有解决此问题的方法?你能为ftp操作推荐一个替代库吗?
提前致谢
更新:
php ×5
java ×2
oop ×2
spring ×2
architecture ×1
class ×1
debugging ×1
doctrine-orm ×1
exception ×1
firebug ×1
ftp ×1
javascript ×1
jquery ×1
mysql ×1
performance ×1
projection ×1
repository ×1
session ×1
spring-boot ×1
spring-data ×1
ssl ×1