diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php
index ee63bfa..ea86fad 100644
--- a/core/lib/Drupal/Core/CoreBundle.php
+++ b/core/lib/Drupal/Core/CoreBundle.php
@@ -293,7 +293,8 @@ public function build(ContainerBuilder $container) {
     $container->register('flood', 'Drupal\Core\Flood\DatabaseBackend')
       ->addArgument(new Reference('database'));
 
-    $container->register('plugin.manager.condition', 'Drupal\Core\Condition\ConditionManager');
+    $container->register('plugin.manager.condition', 'Drupal\Core\Condition\ConditionManager')
+      ->addArgument('%container.namespaces%');
 
     $container->register('kernel_destruct_subscriber', 'Drupal\Core\EventSubscriber\KernelDestructionSubscriber')
       ->addMethodCall('setContainer', array(new Reference('service_container')))
diff --git a/core/modules/php/lib/Drupal/php/Plugin/Core/Condition/Php.php b/core/modules/php/lib/Drupal/php/Plugin/Core/Condition/Php.php
new file mode 100644
index 0000000..87abf86
--- /dev/null
+++ b/core/modules/php/lib/Drupal/php/Plugin/Core/Condition/Php.php
@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\php\Plugin\Core\Condition\Php.
+ */
+
+namespace Drupal\php\Plugin\Core\Condition;
+
+use Drupal\Core\Condition\ConditionPluginBase;
+use Drupal\Component\Annotation\Plugin;
+use Drupal\Core\Annotation\Translation;
+
+/**
+ * Provides a 'Php' condition.
+ *
+ * @Plugin(
+ *   id = "php",
+ *   label = @Translation("PHP"),
+ *   module = "php"
+ * )
+ */
+class Php extends ConditionPluginBase {
+
+  /**
+   * Overrides \Drupal\Core\Condition\ConditionPluginBase::buildForm().
+   */
+  public function buildForm(array $form, array &$form_state) {
+    $form = parent::buildForm($form, $form_state);
+    if (empty($this->configuration['php'])) {
+      // Initialize an empty value.
+      $this->configuration['php'] = FALSE;
+    }
+    $form['php'] = array(
+      '#type' => 'textarea',
+      '#title' => t('When the following PHP return TRUE (experts only)'),
+      '#default_value' => $this->configuration['php'],
+      '#description' => t('Enter PHP code between <?php ?>. Note that executing incorrect PHP code can break your Drupal site. Return TRUE in order for this condition to evaluate as TRUE.'),
+      '#access' => user_access('use PHP for settings')
+    );
+    return $form;
+  }
+
+  /**
+   * Overrides \Drupal\Core\Condition\ConditionPluginBase::submitForm().
+   */
+  public function submitForm(array &$form, array &$form_state) {
+    $this->configuration['php'] = $form_state['values']['php'];
+    parent::submitForm($form, $form_state);
+  }
+
+  /**
+   * Implements \Drupal\Core\Executable\ExecutableInterface::summary().
+   */
+  public function summary() {
+    if (!empty($this->configuration['php'])) {
+      return t('When the given PHP evaluates as @state.',
+        array(
+          '@state' => !empty($this->configuration['negate']) ? 'FALSE' : 'TRUE'
+        )
+      );
+    }
+    else {
+      return t('No PHP code has been provided.');
+    }
+  }
+
+  /**
+   * Implements \Drupal\condition\ConditionInterface::evaluate().
+   */
+  public function evaluate() {
+    return php_eval($this->configuration['php']);
+  }
+
+}
diff --git a/core/modules/php/lib/Drupal/php/Tests/Condition/PhpConditionTest.php b/core/modules/php/lib/Drupal/php/Tests/Condition/PhpConditionTest.php
new file mode 100644
index 0000000..13c339a
--- /dev/null
+++ b/core/modules/php/lib/Drupal/php/Tests/Condition/PhpConditionTest.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\php\Tests\Condition\PhpConditionTest.
+ */
+
+namespace Drupal\php\Tests\Condition;
+
+use Drupal\simpletest\DrupalUnitTestBase;
+
+/**
+ * Tests the php condition.
+ */
+class PhpConditionTest extends DrupalUnitTestBase {
+
+  /**
+   * The condition plugin manager.
+   *
+   * @var \Drupal\Core\Condition\ConditionManager
+   */
+  protected $manager;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('system', 'php');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'PHP Condition Plugin',
+      'description' => 'Tests that the PHP Condition, provided by the php module, is working properly.',
+      'group' => 'Condition API',
+    );
+  }
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->manager = $this->container->get('plugin.manager.condition');
+  }
+
+  /**
+   * Tests conditions.
+   */
+  public function testConditions() {
+    // Grab the PHP condition and configure it to check against a php snippet.
+    $condition = $this->manager->createInstance('php')
+      ->setConfig('php', '<?php return TRUE; ?>');
+    $this->assertTrue($condition->execute(), 'PHP condition passes as expected.');
+    // Check for the proper summary.
+    $this->assertEqual($condition->summary(), 'When the given PHP evaluates as TRUE.');
+
+    // Set the PHP snippet to return FALSE.
+    $condition->setConfig('php', '<?php return FALSE; ?>');
+    $this->assertFalse($condition->execute(), 'PHP condition fails as expected.');
+
+    // Negate the condition.
+    $condition->setConfig('negate', TRUE);
+    // Check for the proper summary.
+    $this->assertEqual($condition->summary(), 'When the given PHP evaluates as FALSE.');
+
+    // Reverse the negation.
+    $condition->setConfig('negate', FALSE);
+    // Set and empty snippet.
+    $condition->setConfig('php', FALSE);
+    // Check for the proper summary.
+    $this->assertEqual($condition->summary(), 'No PHP code has been provided.');
+  }
+
+}
