小编Lim*_*eni的帖子

如何在C#中获取变量的数据类型?

如何找出某个变量所持有的数据类型?(例如int,string,char等)

我现在有这样的事情:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Testing
{
    class Program
    {
        static void Main()
        {
            Person someone = new Person();
            someone.setName(22);
            int n = someone.getName();
            Console.WriteLine(n.typeOf());
        }
    }

    class Person
    {
        public int name;

        public void setName(int name)
        {
            this.name = name;
        }

        public int getName()
        {
            return this.name;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# types

83
推荐指数
4
解决办法
16万
查看次数

如何在Symfony 2和Twig中包含CSS文件?

我正在玩Symfony2,我在Twig模板中遇到包括CSSJS文件的问题.

我有一个名为包Webs/HomeBundle里面,我有HomeControllerindexAction呈现一个树枝模板文件:

public function indexAction()
{
    return $this->render("WebsHomeBundle:Home:index.html.twig");
}
Run Code Online (Sandbox Code Playgroud)

所以这很容易.现在我想要做的是在这个Twig模板中包含一些CSS和JS文件.模板看起来像这样:

<!DOCTYPE html>
<html>
<head>  
    {% block stylesheets %}
        <link href="{{ asset('css/main.css') }}" type="text/css" rel="stylesheet" />
    {% endblock %}
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想要包含的main.css文件,文件位于:

Webs/HomeController/Resources/public/css/main.css
Run Code Online (Sandbox Code Playgroud)

所以我的问题基本上就是如何在Twig模板中包含简单的CSS文件?

我正在使用Twig asset()功能,它只是没有找到正确的CSS路径.另外,我在控制台中运行此命令:

app/console assets:install web
Run Code Online (Sandbox Code Playgroud)

这创建了一个新文件夹

/web/bundles/webshome/...
Run Code Online (Sandbox Code Playgroud)

这只是链接到

src/Webs/HomeController/Resources/public/
Run Code Online (Sandbox Code Playgroud)

对?

问题

  1. 您在哪里放置资产文件,JS,CSS和图像?把它们放在Bundle/Resources/public文件夹中可以吗?这是他们的合适位置吗?
  2. 如何使用资产功能将这些资产文件包含在Twig模板中?如果它们在公共文件夹中,我如何包含它们?
  3. 我应该配置其他东西吗?

symfony twig

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

MySQL - 一对一的关系?

现在我知道有一对一关系的答案,但他们都没有回答我的问题,所以请在下来之前阅读这个:)

我试图在MySQL数据库中实现一对一的关系.例如,假设我有"用户"表和"帐户表".我想确定用户只能拥有一个帐户.并且每个用户只能有一个帐户.

我找到了两个解决方案,但不知道该使用什么,还有其他选择.

第一解决方案

DROP DATABASE IF EXISTS test;
CREATE DATABASE test CHARSET = utf8 COLLATE = utf8_general_ci;
USE test;

CREATE TABLE users(
    id INT NOT NULL AUTO_INCREMENT,
    user_name VARCHAR(45) NOT NULL,
    PRIMARY KEY(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

CREATE TABLE accounts(
    id INT NOT NULL AUTO_INCREMENT,
    account_name VARCHAR(45) NOT NULL,
    user_id INT UNIQUE,
    PRIMARY KEY(id),
    FOREIGN KEY(user_id) REFERENCES users(id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
Run Code Online (Sandbox Code Playgroud)

在此示例中,我在指向用户主键的帐户中定义外键.然后我将外键设为UNIQUE,因此帐户中不能有两个相同的用户.要连接表,我会使用此查询:

SELECT * FROM users JOIN accounts ON users.id …
Run Code Online (Sandbox Code Playgroud)

mysql sql database database-design one-to-one

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

带有禁用cookie的PHP会话,它有效吗?

今天我作为PHP开发人员接受了skype面试,其中一个问题是关于Cookies和PHP Sessions.

问题是,如果在用户浏览器中禁用了Cookie,是否可以设置和读取,使用PHP会话?

我告诉他们不是,默认情况下,PHP会话取决于设置会话cookie.当PHP会话开始,新的会话cookie设置默认名称PHPSESSID,并且该cookie认为会话ID的值,例如:ftu63d8al491s5gatuobj39gk7然后在TMP文件夹中的文件sess_ftu63d8al491s5gatuobj39gk7 Apache服务器上创建并认为会议的内容,例如:test1 | s:12:"SessionTest1"; test2 | s:12:"SessionTest2";

他们告诉我这不是真的,即使用户在浏览器中禁用了cookie,也可以使用PHP Sessions.

然后我告诉他们你可以这样做,但会话ID将作为GET变量通过URL传递.这不安全,你必须在php.ini中设置它.

他们正在讨论如何在浏览器中禁用Cookie时如何使用PHP会话.如果我们正在建立网上商店,并且一些奶奶使用我们的网上商店并禁用cookie,她会更加小心.PHP会话非常棒,因为即使用户禁用了Cookie,您也可以使用它们.我就像wtf,wtf wtf?!?!

我用两个文件进行测试,index.php启动会话并设置会话变量.然后session.php尝试读取该会话变量.

这是它的样子:

的index.php

<p>This is where I start and set php sessions.</p>

<?php

    session_start();
    $_SESSION['test1'] = "SessionTest1";
    $_SESSION['test2'] = "SessionTest2";

?>

<p>This is a link, that starts new HTTP Request, and tries to read session set on this page:</p>
<p><a href="session.php">Read Session</a></p>
Run Code Online (Sandbox Code Playgroud)

session.php文件

<?php

    session_start();
    var_export($_SESSION);

?>

<p><a href="index.php">Back</a></p>
Run Code Online (Sandbox Code Playgroud)

现在,如果您在浏览器中启用cookie,请访问index.php,并访问session.php,会话将被打印出来.

但是,如果你清除浏览器历史记录和cookie,然后访问index.php,然后访问session.php,你会看到空数组对吗?

基本上我的问题是,我是对的吗?如果在浏览器中禁用cookie,可以使用PHP会话吗?并且默认情况下做PHP会话机制,取决于设置会话COOKIE?

更新:我对此感到很生气,所以我回电话给那个和我说话的人.并问他,默认情况下PHP会话可以不使用cookie吗?那家伙说"是".然后我告诉他他错了,他说:"是的,是的,如果你这么说......"然后开始大笑.然后我告诉他,如果PHP会话可以在没有设置cookie的情况下工作,那么服务器如何知道当前用户/浏览器会话ID,如果它没有存储在会话cookie中?(我想知道他是否知道会话ID可以作为GET变量传递)并且他至少安静了20多秒,并告诉我他是系统管理员,我应该问开发人员.而且他已经43岁了,并且在商务方面拥有13年的丰富经验(他以30?wtf开始?),但他信任我.我向他解释了Session如何工作以及你可以在没有Cookie的情况下使用它,但是会话ID被作为GET变量传递,告诉他我告诉他们在采访中,但他们告诉我不,不,不...:S

所以基本上,这个人对PHP和PHP Sessions没有任何线索,是的,他是那个问我会话的人,告诉我PHP会话可以在没有cookie的情况下工作,即使我告诉他不能这样做,那个有一种方法可以在没有cookie的情况下使用PHP会话,但默认情况下它不起作用.他就像,不,不......最后他告诉我,他认为会话可以在没有cookie的情况下工作,因为他作为服务器上的系统管理员,永远看不到tmp文件夹中的会话?!?!?

无论如何,那些家伙都吮吸PHP,我无法接受他们的工作机会,毕竟我不认为他们会给我一份工作......

感谢所有的评论!

php cookies session

44
推荐指数
4
解决办法
4万
查看次数

Symfony 2 - 如何删除捆绑包?

所以我的问题是如何删除我创建的包?

您可以使用此控制台命令创建捆绑包:

php app/console generate:bundle --namespace=Test/BlogBundle --format=yml
Run Code Online (Sandbox Code Playgroud)

这太棒了但是如果我需要删除这个包呢?是否有控制台命令删除我不再需要的包?

我知道当你从控制台创建新的bundle时,你:

1. create /src/Test/BlogBundle directory
2. change /app/config/routing.yml file to include routes
3. include your new bundle in /app/Resources/App.Kernel.php
4. I think there is something changed in /app/cache/...
Run Code Online (Sandbox Code Playgroud)

现在完全删除捆绑包的正确方法是什么?

它使用控制台这些捆绑包的争夺是"神奇地"生成的,所以我不知道这个命令在文件夹结构和文件中发生了什么变化?

php symfony symfony-2.1

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

PHP - 如何比较两个数组并删除重复值

所以这是困扰我的.

我有两个数组:

$array1 = array('[param1]' ,'demo' ,'[param2]' ,'some' ,'[param3]');
$array2 = array('value1'   ,'demo' ,'value2'   ,'some' ,'value3');
Run Code Online (Sandbox Code Playgroud)

现在我想比较这两个数组,并删除所有重复的值.
最后我想要这两个数组,但没有'demo'和'some'值.
我想从array-s中删除具有相同索引键和值的所有值.
Array将始终具有相同数量的值和索引,我只想比较它们并从两者中删除具有相同索引键和值的条目.

我现在正在做这样的事情:

$clean1 = array();
$clean2 = array();    

foreach($array1 as $key => $value)
{
    if($value !== $array2[$key])
    {
        $clean1[$key] = $value;
        $clean2[$key] = $array2[$key];
    }
}

var_export($clean1);
echo "<br />";
var_export($clean2);
Run Code Online (Sandbox Code Playgroud)

这有效!但我想知道有没有其他方法这样做?也许没有使用foreach循环?这样做有更优雅的方式吗?

php arrays

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

使用SplClassLoader进行PHP自动加载?

我正在学习PHP 5.3中的命名空间,我想使用命名空间自动加载.我找到了这个SplClassLoader类,但我无法弄清楚它是如何工作的.

假设我有这样的目录结构:

system
  - framework
    - http
      - request.php
      - response.php
index.php
SplClassLoader.php
Run Code Online (Sandbox Code Playgroud)

如何启用类自动加载?应该什么命名空间request.phpresponse.php有哪些?

这是request.php:

namespace framework\http;

class Request
{
    public function __construct()
    {
        echo __CLASS__ . " constructer!";
    }
} 
Run Code Online (Sandbox Code Playgroud)

这是response.php:

namespace framework\http;

class Request
{            
    public function __construct()
    {      
        echo __CLASS__ . " constructed!";                
    }           
}   
Run Code Online (Sandbox Code Playgroud)

index.php我有:

require_once("SplClassLoader.php");
$loader = new SplClassLoader('framework\http', 'system/framework');
$loader->register();

$r = new Request();
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

Fatal error: Class 'Request' not found …
Run Code Online (Sandbox Code Playgroud)

php autoload spl-autoloader

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

PHP - 从Model加载Database对象的最佳方法,但只有一个实例?

这是我的问题,我有一个很小的PHP MVC框架我建立.现在,当我在控制器中,我应该能够加载一个模型.我的模型名称像Users.php,Pages.php等数据库表.

所有控制器都扩展了BaseController,并且所有模型都扩展了BaseModel,这样我可以为所有控制器提供一些方法.像任何控制器一样,我可以像这样使用loadModel方法:

$usersModel = $this->loadModel("Users");
Run Code Online (Sandbox Code Playgroud)

现在$ usersModel将是表示用户数据库表的对象,从那里我应该打开数据库连接,并从users表中获取,更新,删除东西.

要从我的模型获取数据库连接,baseModel有方法loadDatabase(),我使用它像这样:

$database = $this->loadDatabase();
Run Code Online (Sandbox Code Playgroud)

这将返回PDO周围的薄层,所以从那里我可以使用这样的东西:

$data = $database->fetchAssoc("SELECT * FROM users WHERE name = ?", array("someone"));
Run Code Online (Sandbox Code Playgroud)

这就是我将一些$ data从Model返回给Controller的方法.

所以基本上,Controller可以加载模型,然后在该模型上调用返回某些数据或更新或删除等的方法.

现在,Controller可以加载多个模型.每个模型都应该加载数据库,这就是它变得复杂的地方.我只需要一个数据库连接.

这是loadDatabase方法的外观:

    public function loadDatabase()
    {
        // Get database configuration  
        require_once("Application/Config/Database.php");

        // Build configuration the way Database Object expects it
        $dns      = "{$db_config['db_driver']}:host={$db_config['db_host']};dbname={$db_config['db_name']}";
        $username = $db_config['db_user'];
        $password = $db_config['db_pass'];
        $options  = $db_config['db_options'];

        // Return new Database object
        return new \Core\Database\Database($dns, $username, $password, $options);

    }
Run Code Online (Sandbox Code Playgroud)

因此,在加载Database对象之前,我必须加载数据库连接的配置,因为Database对象__constructor需要它.然后我实例化新的数据库对象并返回它.

现在我卡住了,我不知道这是从模型加载数据库的正确方法吗?我应该如何设置它,如何从模型内部加载数据库,因此始终只有一个数据库对象实例.如果我从Controller那样做这样的事情,那就更好了:

$users = $this->loadModel("Users");
$pages = $this->loadModel("Pages");

$users->doSomethingThatNeedsDatabase(); …
Run Code Online (Sandbox Code Playgroud)

php database model-view-controller

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

用_字符后面的大写字母替换每个_字符

我该如何解决这个问题:

我想要像这样转换字符串:

some_words => someWords
some_more_text => someModeText
Run Code Online (Sandbox Code Playgroud)

希望你明白这一点,我需要用X替换每个_x.

我现在有这样的事情:

$string = 'some_words';
$new = preg_replace('/_([a-z])/', strtoupper('$1'), $string);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我可以在preg_replace函数中使用内置的PHP函数吗?

我该如何解决这个问题?

谢谢!

php regex string

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