/** * Return an instance with the specified user information. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified user information. * * Password is optional, but the user information MUST include the * user; an empty string for the user is equivalent to removing user * information. * * @param string $user The user name to use for authority. * @param null|string $password The password associated with $user. * @return self A new instance with the specified user information. */ public function withUserInfo($user, $password = null) { $uriAsString = $this->uriAsString; $url = new Url($uriAsString); if (empty($user)) { $url->set('user', null); $url->set('pass', null); } else { $url->set('user', $user); $url->set('pass', $password); } return new self($url->getUrl()); }
public function testManualObjectConstruction() { $url = new Url('http://jwage.com'); $url->set('path', new Path('about')); $url->set('query', new Query('param=value')); $url->set('fragment', new Fragment(new Path('about'), new Query('param=value'))); $this->assertEquals('http://jwage.com/about?param=value#about?param=value', (string) $url); }