In this paper, we design a self-stabilizing phase synchronizer for distributed systems. The synchronizer enables a node to transfer from one phase to the next one, subject to the condition that at most two consecutive phases appear among all nodes. It does not rely on any system parameter like the number of nodes, and thus fits for dynamic systems where nodes can freely join or leave. Each node just maintains a few variables that are related to its neighborhood; all operations are decided based on local information rather than global information. The memory usage of the proposed algorithm is low; each node has only O(Delta K) states, where Delta is the maximum degree of nodes and K > 1 is the number of phases. To the best of our knowledge, there are no other such size-independent self-stabilizing algorithms for systems of general graph topologies.