如果我理解正确,我们至少有两种不同的方法来实现组合.(为了简单起见,使用智能指针实现的情况除外.我几乎不使用STL而且不想学习它.)
我们来看看维基百科的例子:
class Car
{
private:
Carburetor* itsCarb;
public:
Car() {itsCarb=new Carburetor();}
virtual ~Car() {delete itsCarb;}
};
Run Code Online (Sandbox Code Playgroud)
所以,这是一种方式 - 我们有一个指向对象的指针作为私有成员.可以将其重写为如下所示:
class Car
{
private:
Carburetor itsCarb;
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们将对象本身作为私有成员.(顺便说一句,从术语的角度来看,我是否正确地称这个实体为对象?)
在第二种情况下,隐式调用默认构造函数(如果需要调用非默认构造函数,可以在初始化列表中执行)和析构函数,则不是必须的.但这不是一个大问题......
当然,在某些方面,这两种情况的区别更为明显.例如,在第二种情况下禁止从Car类的const方法调用Carburetor实例的非const方法...
是否有任何"规则"来决定使用哪一个?我错过了什么吗?
如何使用SPL,可能使用RecursiveDirectoryIterator和检索完整目录树RecursiveIteratorIterator?
Docker 最佳实践指南指出:
"......你应该只在一个容器中运行一个进程......"
Nginx和PHP-FPM应该在不同的容器中运行吗?或者这是否意味着微服务架构只在容器中运行一个服务或"app"?
将这些服务放在单个容器中似乎更容易部署和维护.
我想要一个简洁安全的干净/紧凑模式rulesKey,即使抛出某些东西也会妥善处理.这似乎是不可能的using(除非可能4 using秒,但看起来如此冗长并打开额外的资源,我甚至可能不需要打开).让我感到惊讶的是,这在C++中会如此直接/轻松.有一个很好的解决方案吗?
{
RegistryKey rulesKey = null;
rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\Company\\Internal\\Product");
rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Company\\Company\\Internal\\Product");
rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\Company\\Product");
rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Company\\Product");
// Code using rulesKey, might throw
rulesKey.Close();
}
Run Code Online (Sandbox Code Playgroud) 我试图在这个例子e之后插入一个重音到mysql数据库.使用这个:
mysql_query("SET NAMES 'utf8'");
Run Code Online (Sandbox Code Playgroud)
抛出:
警告:mysql_query()[function.mysql-query]:拒绝访问用户'ODBC'@'localhost'
它没有连接到数据库:
DEFINE ('DB_USER', 'user');
DEFINE ('DB_PASSWORD', 'pword');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'test1');
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
Run Code Online (Sandbox Code Playgroud) 我想对整数进行排序,并且我知道基数排序对此非常有用。任何此类的库实现?
这是有点共同的知识与不同版本的PHP和MySQL,并通过使用本地预处理语句或模拟预处理语句,可以有natine值类型或没有,像这样:
$value = $db->query("SELECT 1033 AS Code")->fetch(PDO::FETCH_COLUMN)
$value2 = $db->query("SELECT '1033' AS Code")->fetch(PDO::FETCH_COLUMN);
//PDO::ATTR_EMULATE_PREPARES set to true:
var_dump($value); // string(4) "1033"
var_dump($value2); // string(4) "1033"
//PDO::ATTR_EMULATE_PREPARES set to false:
var_dump($value); // int(1033)
var_dump($value2); // string(4) "1033"
Run Code Online (Sandbox Code Playgroud)
从这篇文章:
问题是 PDO 由于类型转换为字符串而导致 zval-separation。转换由 PDO 核心请求。
默认情况下,PDO 将始终将数据转换为字符串,并且 PDO_MYSQL 驱动程序只能通过返回 zval 来解决此 PDO 默认值。
为什么 PDO 总是将数据转换为字符串?
我们的mysql数据库显示Î Î¿Î»Ï Î³Î»Ï…ÎºÏŒÏ代替希腊字符,同时将数据从模拟器发送到mysql数据库.其他字符保持不变.
phpMyAdmin截图:
更新:
使用后
@FélixGagnon-Grenier在我的代码中回答它给了我:
用于表创建的SQL
CREATE TABLE `cart` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`product_name` varchar(255) NOT NULL,
`product_price` double(3,2) NOT NULL,
`product_image` varchar(255) NOT NULL,
`quantity` int(11) NOT NULL,
`preferation1` varchar(50) NOT NULL,
`preferation2` varchar(50) NOT NULL,
`preferation3` varchar(50) NOT NULL,
`preferation4` varchar(50) NOT NULL,
`magazi_id` int(11) NOT NULL,
`servitoros_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
PHP
<?php
error_reporting(E_ALL ^ E_NOTICE);
ini_set("default_charset", "UTF-8");
header('Content-type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
mb_http_input("utf-8");
try …Run Code Online (Sandbox Code Playgroud) 我有扩展抽象类的类。我需要通过字符串创建这些类的实例 - 最好是 JSON。
许多对象是嵌套的,许多属性是私有的。我需要一种方法:
我想它需要是递归的。
如果我只是将对象转换为数组,我正在使用最终看起来像废话的命名空间。
我正在考虑编写一个解析器,在我的 JSON 字符串中标记类,然后为每个类硬编码一个工厂函数,但这需要很多时间。