小编Dan*_*ugg的帖子

表设计和类层次结构

希望有人可以通过一个例子或者一些建议的阅读来解释这个问题.我想知道在类层次结构等效之后建模表的最佳设计方法是什么.这可以通过一个例子来描述:

abstract class Card{
    private $_name = '';
    private $_text = '';
}

class MtgCard extends Card{
    private $_manaCost = '';
    private $_power = 0;
    private $_toughness = 0;
    private $_loyalty = 0;
}

class PokemonCard extends Card{
    private $_energyType = '';
    private $_hp = 0;
    private $_retreatCost = 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,在建模表以与此类层次结构同步时,我已经使用了非常类似的东西:

TABLE Card
  id            INT, AUTO_INCREMENT, PK
  name          VARCHAR(255)
  text          TEXT

TABLE MtgCard
  id            INT, AUTO_INCREMENT, PK
  card_id       INT, FK(card.id)
  manacost      VARCHAR(32)
  power         INT
  toughness     INT
  loyalty …
Run Code Online (Sandbox Code Playgroud)

language-agnostic orm database-design class-hierarchy

2
推荐指数
1
解决办法
675
查看次数

IE8 .css()中的jQuery返回undefined值

这似乎在IE8中失败了(没有测试过7,但肯定也会失败)value函数返回undefined.它在Firefox中工作正常:

$('selector').css('property', function(index, value){ alert(value); });
Run Code Online (Sandbox Code Playgroud)

我脚本中的实际代码如下:

$('.scrollBkg').css('background-position', function(index, value){
    var backgroundPosition = value.split(' ');
    return (parseFloat(backgroundPosition[0]) + (($(this).hasClass('scrollLeft') ? -1 : 1) * parseInt($(this).css('z-index'))) / 2) + 'px ' + backgroundPosition[1];
});
Run Code Online (Sandbox Code Playgroud)

为什么说valueundefined在IE浏览器?相反,我怎样才能按预期工作呢?

jquery internet-explorer cross-browser

2
推荐指数
1
解决办法
2915
查看次数

程序化梯度使用Javascript停止

使用Javascript(jQuery的)工作,给定2个颜色值(2033ff3300a0例如)如何可以确定它们之间某些梯度停止?

原因是,我打算使用一组颜色值:

    0 => '000000'
 8400 => 'f0ff00'
44000 => '2033ff'
68400 => '3300a0'
Run Code Online (Sandbox Code Playgroud)

一天有86400秒,上午12:00映射到0,下午11:59映射到86399.随着时间的推移,指定元素的背景颜色将变为渐变列表中的相应颜色window.setInterval(function(e){ ... }, 1000).例如2:32:11PM = 52331,该示例中的哪个位于2033ff和之间3300a0.

我不需要使用值填充数组(除非这更容易),而是使用索引和值作为引用.

javascript jquery hex gradient colors

2
推荐指数
1
解决办法
1535
查看次数

PHP SoapClient无法正常工作 - 没有错误

我有一些代码通过SOAP连接到新闻通讯服务.它在我们的开发服务器上没有问题,但在我们的实时服务器上它根本不起作用.它没有返回任何错误; 只是一个空白的白页.我已经在代码中添加了一些error_logs并找到它停止工作的确切位置 - 在创建新SoapClient的行上.是否需要设置某种服务器配置?我们的代码在dev和prod之间是相同的,所以我唯一能想到的就是服务器问题.(请注意,下面的第一段代码是由简报服务提供的,不是我写的.)

# bronto API session/connection setup
ini_set("soap.wsdl_cache_enabled", "0");
date_default_timezone_set('America/Chicago');

$wsdl = "https://api.bronto.com/v4?wsdl";
$url = "https://api.bronto.com/v4";

/*error log statements up to this point return what is expected; 
  an error log after the following line (starting with $client = new SoapClient) 
  does not get triggered at all. */

$client = new SoapClient($wsdl, array('trace' => 1, 'encoding' => 'UTF-8')); 
$client->__setLocation($url);

$token = "XXX";
$sessionId = $client->login(array("apiToken" => $token))->return;
$client->__setSoapHeaders(array(new SoapHeader("http://api.bronto.com/v4",
        'sessionHeader',
         array('sessionId' => $sessionId))));
Run Code Online (Sandbox Code Playgroud)

我也试过这样的事情来明确地看到任何错误,但没有运气 - 错误日志中仍然没有.

try {  
  $client …
Run Code Online (Sandbox Code Playgroud)

php soap-client bronto

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

PHP:array_push in循环结果只导致最后一条记录重复

我以为我有一些基本的PHP技能,至少足以为简单的应用程序进行开发,但我发现自己陷入了非常基本的数组操作问题.

我在$ results变量上设置了curl操作的结果.为了更简单的代码,(责怪我它太原始了.),我已经使用基本循环遍历$ results变量来为我的下一个操作产生有利的结果.

$data = array();
for ($i = 0; $i < count($results); $i++) {
    $row = $results[$i];
    $atom->objectId = $row['objectId'];
    $atom->username = $row['username'];
    array_push($data, $atom);
}
var_dump(json_encode($data));
Run Code Online (Sandbox Code Playgroud)

样本数据:

{ 
  [0] => { ["objectId"]: "12345", ["username"]: "user1" },
  [1] => { ["objectId"]: "12567", ["username"]: "user2" },
  [2] => { ["objectId"]: "12789", ["username"]: "user3" },
  [3] => { ["objectId"]: "13579", ["username"]: "user4" }
}
Run Code Online (Sandbox Code Playgroud)

你可以简单地找出预期的输出,但真正的输出结果是:

[
  { "objectId": "13579", "username": "user4" }, 
  { "objectId": "13579", "username": "user4" },
  { "objectId": …
Run Code Online (Sandbox Code Playgroud)

php

2
推荐指数
1
解决办法
1081
查看次数

PHP反射; 提取非块注释

我最近熟悉Reflection并且一直在尝试它,特别是getDocComment(),它似乎只支持/** */注释块.

/** foobar */
class MyClass{}

$refl = new ReflectionClass('MyClass');

// produces /** foobar */
echo $refl->getDocComment();
Run Code Online (Sandbox Code Playgroud)

-与-

# foobar
class MyClass{}

$refl = new ReflectionClass('MyClass');

// produces nothing
echo $refl->getDocComment();
Run Code Online (Sandbox Code Playgroud)

如果不诉诸任何file_get_contents(__FILE__)废话,是不是可以捕获它?


根据dader51的回答,我认为我的最佳方法是这样的:

// random comment

#[annotation]

/**
 * another comment with a # hash
 */

#[another annotation]

$annotations
    = array_filter(token_get_all(file_get_contents(__FILE__)), function(&$token){
    return (($token[0] == T_COMMENT) && ($token = strstr($token[1], '#')));
});

print_r($annotations);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [4] => #[annotation] …
Run Code Online (Sandbox Code Playgroud)

php reflection comments phpdoc

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

php:// memory&php:// temp; 在后续句柄创建时保留流数据

这个问题与我关于这个问题的新发现密切相关.

有没有什么办法来保存的数据流中的数据php://memoryphp://temp手柄之间?我读过(我无法获取的某个地方)上述流的后续开放清除了现有数据.

$mem1 = fopen('php://memory', 'r+');
fwrite($mem1, 'hello world');
rewind($mem1);
fpassthru($mem1); // "hello world"

$mem2 = fopen('php://memory', 'r+');
rewind($mem2);
fpassthru($mem2); // empty
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,无论如何,在创建新句柄时,是否还要强制现有数据保持在流中?

(后者调用fpassthru()当然会转储,hello world因为这是可能的)

php memory temporary stream handle

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

尽管AsyncTask,NetworkOnMainThreadException

我是android新手并开发一个测试应用程序来命中服务器并获得json响应.这是我的主要活动 -

public class MainPageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.welcome_layout);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);
    MenuItem searchItem = menu.findItem(R.id.search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);

    SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }

        @Override
        public boolean onQueryTextSubmit(String query) {
            new DownloadWebpageTask().doInBackground("http://49.139.144.194:8080/ServerForMyAndroid/MusicServlet");
            return false;
        }
    };
    searchView.setOnQueryTextListener(queryTextListener);
    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

}

AsyncTask类是 -

public class DownloadWebpageTask extends AsyncTask<String, Void, String> { …
Run Code Online (Sandbox Code Playgroud)

java android android-asynctask

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

PHP中相同的函数和类名

在PHP中,是否存在同名的类和函数可能以任何方式发生冲突或导致问题?例如:

function Foobar(){
    // ...
}

class Foobar{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

粗略的测试表明,PHP可以根据上下文来区分它们.

php class function

0
推荐指数
1
解决办法
177
查看次数

jQuery中的元素创建; 创建,包装,追加

比较快;

我正在动态创建一些元素,并将它们附加到另一个元素.

$element = $('<input />', {
    // attributes
}).add('<label />', {
    // attributes
});
Run Code Online (Sandbox Code Playgroud)

这产生<input /><label></label>了各自的属性和内容.我只是想把它包装成一个<div>并且认为会有一个同样干净的方式这样做,但我似乎无法让以下工作:

$element = $('<input />', {
    // attributes
}).add('<label />', {
    // attributes
}).wrapAll('<div />');
Run Code Online (Sandbox Code Playgroud)

如果我是console.log()我的$element,那只是<input><label>.我也试过了

$element = $($('<input />', {
    // attributes
}).add('<label />', {
    // attributes
})).wrapAll('<div />');
Run Code Online (Sandbox Code Playgroud)

分别选择要追加的元素<input><label>元素,然后应用.wrapAll(),但也不起作用,导致与上面相同.

我接近了吗?我应该走另一条路吗?


感谢@mu,结束了以下情况

$element = $('<div />').append($('<input />', {
    // attr
}).add('<label />', {
    // attr …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery dom

0
推荐指数
1
解决办法
2307
查看次数