extensions/php-language-features/src/features/validationProvider.ts/PHPValidationProvider/triggerValidate
class PHPValidationProvider:	private async triggerValidate(textDocument: vscode.TextDocument): Promise<void> {
		await this.loadConfigP;
		if (textDocument.languageId !== 'php' || this.pauseValidation || !this.validationEnabled) {
			return;
		}


		let trigger = () => {
			let key = textDocument.uri.toString();
			let delayer = this.delayers![key];
			if (!delayer) {
				delayer = new ThrottledDelayer<void>(this.config?.trigger === RunTrigger.onType ? 250 : 0);
				this.delayers![key] = delayer;
			}
			delayer.trigger(() => this.doValidate(textDocument));
		};

		const trustEnabled = vscode.workspace.getConfiguration().get('security.workspace.trust.enabled');
		if (trustEnabled) {
			if (vscode.workspace.isTrusted) {
				trigger();
			}
		} else {
			if (this.config!.executableIsUserDefined !== undefined && !this.config!.executableIsUserDefined) {
				const checkedExecutablePath = this.workspaceStore.get<string | undefined>(Setting.CheckedExecutablePath, undefined);
				if (!checkedExecutablePath || checkedExecutablePath !== this.config!.executable) {
					if (await this.showCustomTrustDialog()) {
						this.workspaceStore.update(Setting.CheckedExecutablePath, this.config!.executable);
						vscode.commands.executeCommand('setContext', 'php.untrustValidationExecutableContext', true);
					} else {
						this.pauseValidation = true;
						return;
					}
				}
			}

			trigger();
		}
	}