Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
1.5 kB · 57 lines
PHP
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<?php
final class PhutilQueryString extends Phobject {
private $maskedString; private $unmaskedString;
public function __construct(PhutilQsprintfInterface $escaper, array $argv) { // Immediately render the query into a static scalar value.
// This makes sure we throw immediately if there are errors in the // parameters, which is much better than throwing later on.
// This also makes sure that later mutations to objects passed as // parameters won't affect the outcome. Consider: // // $object->setTableName('X'); // $query = qsprintf($conn, '%R', $object); // $object->setTableName('Y'); // // We'd like "$query" to reference "X", reflecting the object as it // existed when it was passed to "qsprintf(...)". It's surprising if the // modification to the object after "qsprintf(...)" can affect "$query".
$masked_string = xsprintf( 'xsprintf_query', array( 'escaper' => $escaper, 'unmasked' => false, ), $argv);
$unmasked_string = xsprintf( 'xsprintf_query', array( 'escaper' => $escaper, 'unmasked' => true, ), $argv);
$this->maskedString = $masked_string; $this->unmaskedString = $unmasked_string; }
public function __toString() { return $this->getMaskedString(); }
public function getUnmaskedString() { return $this->unmaskedString; }
public function getMaskedString() { return $this->maskedString; }
}