假设我有这样的三门课。
abstract class A {
abstract protected function doSomething($object): array;
}
class B extends A {
protected function doSomething(SomeObject $object): array
{
// something
}
}
class C extends A {
protected function doSomething(OtherObject $object): array
{
// something
}
}
Run Code Online (Sandbox Code Playgroud)
根据 PHP 的继承原理,上述结构不是合法的 PHP 代码,因为方法定义与基类不兼容。我当然可以做类似的事情
class B extends A {
protected function doSomething($object): array
{
if (!is_a($object, 'SomeObject')) {
throw new Exception('Object passed to method is not of the correct class for this method.');
}
// something
}
} …Run Code Online (Sandbox Code Playgroud) 假设我有一个元素数组,它们本身就是数组,如下所示:
$array = [
['foo' => 'ABC', 'bar' => 'DEF'],
['foo' => 'ABB', 'bar' => 'DDD'],
['foo' => 'BAC', 'bar' => 'EFF'],
];
Run Code Online (Sandbox Code Playgroud)
要将foo字段的值设置为数组的键,我可以这样做:
foreach ($array as $element) {
$new_array[$element['foo']] = $element;
}
$array = $new_array;
Run Code Online (Sandbox Code Playgroud)
代码自然是微不足道的,但我一直想知道是否有内置的可以为我做同样的事情。
我已经为5个元素的数组动态分配了内存,然后尝试将其元素打印到std::cout,这应该给我带来相当简单的结果。相反,我得到了其他东西,这给我带来了一些问题。
我的代码:
#include <iostream>
int main()
{
int *array = new int[5];
int array_size = sizeof(array);
for (int index = 0; index < array_size; index++) {
std::cout << array[index] << "\n";
}
std::cout << "\nThe array is " << array_size << " elements long.";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这就是结果:
0
0
0
0
0
0
132049
0
Run Code Online (Sandbox Code Playgroud)
现在,我知道这不是事情的完成方式,但是这样的结果使我有几个问题。
我有一个Laravel模型,它有一个foo属性.但是,在数据库中,我要传入的值foo存储在bar列中.有没有办法在不改变数据库结构的情况下做到这一点?它由我正在整合项目的第三方所拥有,而我实际上无法控制他们的数据库结构.
我已经设法使用$connection和建立与所述数据库的连接$table,但映射属性仍然是一个问题.