function Locker::setLockData
Locks provided data into lockfile.
@phpstan-param list<array{package: string, version: string, alias: string, alias_normalized: string}> $aliases
Parameters
PackageInterface[] $packages array of packages:
PackageInterface[]|null $devPackages array of dev packages or null if installed without --dev:
array<string, string> $platformReqs array of package name => constraint for required platform packages:
array<string, string> $platformDevReqs array of package name => constraint for dev-required platform packages:
string[][] $aliases array of aliases:
array<string, int> $stabilityFlags:
array<string, string|false> $platformOverrides:
bool $write Whether to actually write data to disk, useful in tests and for --dry-run:
File
-
vendor/
composer/ composer/ src/ Composer/ Package/ Locker.php, line 358
Class
- Locker
- Reads/writes project lockfile (composer.lock).
Namespace
Composer\PackageCode
public function setLockData(array $packages, ?array $devPackages, array $platformReqs, array $platformDevReqs, array $aliases, string $minimumStability, array $stabilityFlags, bool $preferStable, bool $preferLowest, array $platformOverrides, bool $write = true) : bool {
// keep old default branch names normalized to DEFAULT_BRANCH_ALIAS for BC as that is how Composer 1 outputs the lock file
// when loading the lock file the version is anyway ignored in Composer 2, so it has no adverse effect
$aliases = array_map(static function ($alias) : array {
if (in_array($alias['version'], [
'dev-master',
'dev-trunk',
'dev-default',
], true)) {
$alias['version'] = VersionParser::DEFAULT_BRANCH_ALIAS;
}
return $alias;
}, $aliases);
$lock = [
'_readme' => [
'This file locks the dependencies of your project to a known state',
'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies',
'This file is @gener' . 'ated automatically',
],
'content-hash' => $this->contentHash,
'packages' => $this->lockPackages($packages),
'packages-dev' => null,
'aliases' => $aliases,
'minimum-stability' => $minimumStability,
'stability-flags' => $stabilityFlags,
'prefer-stable' => $preferStable,
'prefer-lowest' => $preferLowest,
];
if (null !== $devPackages) {
$lock['packages-dev'] = $this->lockPackages($devPackages);
}
$lock['platform'] = $platformReqs;
$lock['platform-dev'] = $platformDevReqs;
if (\count($platformOverrides) > 0) {
$lock['platform-overrides'] = $platformOverrides;
}
$lock['plugin-api-version'] = PluginInterface::PLUGIN_API_VERSION;
$lock = $this->fixupJsonDataType($lock);
try {
$isLocked = $this->isLocked();
} catch (ParsingException $e) {
$isLocked = false;
}
if (!$isLocked || $lock !== $this->getLockData()) {
if ($write) {
$this->lockFile
->write($lock);
$this->lockDataCache = null;
$this->virtualFileWritten = false;
}
else {
$this->virtualFileWritten = true;
$this->lockDataCache = JsonFile::parseJson(JsonFile::encode($lock));
}
return true;
}
return false;
}